{ "openapi": "3.0.3", "info": { "title": "Vercel REST API & SDK", "description": "The [`@vercel/sdk`](https://www.npmjs.com/package/@vercel/sdk) is a type-safe Typescript SDK that allows you to access the resources and methods of the Vercel REST API. Learn how to [install it](https://vercel.com/docs/rest-api/sdk#installing-vercel-sdk) and [authenticate](https://vercel.com/docs/rest-api/sdk#authentication) with a Vercel access token.", "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": { "teamPermissions": { "items": { "type": "string", "enum": [ "IntegrationManager", "CreateProject", "FullProductionDeployment", "UsageViewer", "EnvVariableManager", "EnvironmentManager", "V0Builder", "V0Chatter", "V0Viewer" ] }, "type": "array" }, "entitlements": { "items": { "type": "string", "enum": [ "v0" ] }, "type": "array" }, "isDsyncManaged": { "type": "boolean", "enum": [ false, true ] }, "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 }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] } }, "required": [ "accessGroupId", "createdAt", "isDsyncManaged", "membersCount", "name", "projectsCount", "teamId", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "read", "get" ] }, "parameters": [ { "name": "idOrName", "in": "path", "required": true, "schema": { "type": "string" }, "x-vercel-cli": { "kind": "argument" }, "examples": { "id": { "summary": "Access group ID", "value": "ag_1a2b3c4d5e6f7g8h9i0j" }, "name": { "summary": "Access group name", "value": "My Access Group" } } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "readAccessGroup", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.accessGroups.readAccessGroup({\n idOrName: \"ag_1a2b3c4d5e6f7g8h9i0j\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "readAccessGroup", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.AccessGroups.ReadAccessGroup(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": { "properties": { "entitlements": { "items": { "type": "string", "enum": [ "v0" ] }, "type": "array" }, "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 }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] }, "teamPermissions": { "items": { "type": "string" }, "type": "array", "description": "Permissions that the team has in the access group.", "example": [ "CreateProject" ] } }, "required": [ "accessGroupId", "createdAt", "entitlements", "membersCount", "name", "projectsCount", "teamId", "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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", "example": "ADMIN", "description": "The project role that will be added to this Access Group. \"null\" will remove this project level role.", "nullable": true, "enum": [ "ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER", null ] } } } }, "membersToAdd": { "description": "List of members to add to the access group.", "type": "array", "items": { "type": "string" }, "example": [ "usr_1a2b3c4d5e6f7g8h9i0j", "usr_2b3c4d5e6f7g8h9i0j1k" ] }, "membersToRemove": { "description": "List of members to remove from the access group.", "type": "array", "items": { "type": "string" }, "example": [ "usr_1a2b3c4d5e6f7g8h9i0j", "usr_2b3c4d5e6f7g8h9i0j1k" ] } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateAccessGroup", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.accessGroups.updateAccessGroup({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"My access group\",\n projects: [\n {\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n role: \"ADMIN\",\n },\n ],\n membersToAdd: [\n \"usr_1a2b3c4d5e6f7g8h9i0j\",\n \"usr_2b3c4d5e6f7g8h9i0j1k\",\n ],\n membersToRemove: [\n \"usr_1a2b3c4d5e6f7g8h9i0j\",\n \"usr_2b3c4d5e6f7g8h9i0j1k\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "updateAccessGroup", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.AccessGroups.UpdateAccessGroup(ctx, \"\", nil, nil, &operations.UpdateAccessGroupRequestBody{\n Name: vercel.String(\"My access group\"),\n Projects: []operations.Projects{\n operations.Projects{\n ProjectID: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n Role: operations.RoleAdmin.ToPointer(),\n },\n },\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteAccessGroup", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.accessGroups.deleteAccessGroup({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "deleteAccessGroup", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.AccessGroups.DeleteAccessGroup(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/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", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] } }, "required": [ "email", "teamRole", "uid", "username" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listAccessGroupMembers", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.accessGroups.listAccessGroupMembers({\n idOrName: \"ag_pavWOn1iLObbXLRiwVvzmPrTWyTf\",\n limit: 20,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "listAccessGroupMembers", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.AccessGroups.ListAccessGroupMembers(ctx, operations.ListAccessGroupMembersRequest{\n IDOrName: \"ag_pavWOn1iLObbXLRiwVvzmPrTWyTf\",\n Limit: vercel.Int64(20),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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" }, "entitlements": { "items": { "type": "string" }, "type": "array" }, "teamPermissions": { "items": { "type": "string" }, "type": "array" }, "isDsyncManaged": { "type": "boolean", "enum": [ false, true ] }, "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 }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] } }, "required": [ "accessGroupId", "createdAt", "isDsyncManaged", "membersCount", "name", "projectsCount", "teamId", "updatedAt" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "list" ] }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listAccessGroups", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.accessGroups.listAccessGroups({\n projectId: \"prj_pavWOn1iLObbx3RowVvzmPrTWyTf\",\n search: \"example\",\n membersLimit: 20,\n projectsLimit: 20,\n limit: 20,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "listAccessGroups", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.AccessGroups.ListAccessGroups(ctx, operations.ListAccessGroupsRequest{\n ProjectID: vercel.String(\"prj_pavWOn1iLObbx3RowVvzmPrTWyTf\"),\n Search: vercel.String(\"example\"),\n MembersLimit: vercel.Int64(20),\n ProjectsLimit: vercel.Int64(20),\n Limit: vercel.Int64(20),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] }, "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": { "entitlements": { "items": { "type": "string", "enum": [ "v0" ] }, "type": "array" }, "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" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] }, "teamPermissions": { "items": { "type": "string" }, "type": "array", "description": "Permissions that the team has in the access group.", "example": [ "CreateProject" ] } }, "required": [ "accessGroupId", "createdAt", "entitlements", "membersCount", "name", "projectsCount", "teamId", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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", "example": "ADMIN", "description": "The project role that will be added to this Access Group. \"null\" will remove this project level role.", "nullable": true, "enum": [ "ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER", null ] } } } }, "membersToAdd": { "description": "List of members to add to the access group.", "type": "array", "items": { "type": "string" }, "example": [ "usr_1a2b3c4d5e6f7g8h9i0j", "usr_2b3c4d5e6f7g8h9i0j1k" ] } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "createAccessGroup", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.accessGroups.createAccessGroup({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"My access group\",\n projects: [\n {\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n role: \"ADMIN\",\n },\n {\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n role: \"ADMIN\",\n },\n {\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n role: \"ADMIN\",\n },\n ],\n membersToAdd: [\n \"usr_1a2b3c4d5e6f7g8h9i0j\",\n \"usr_2b3c4d5e6f7g8h9i0j1k\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "createAccessGroup", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.AccessGroups.CreateAccessGroup(ctx, nil, nil, &operations.CreateAccessGroupRequestBody{\n Name: \"My access group\",\n Projects: []operations.CreateAccessGroupProjects{\n operations.CreateAccessGroupProjects{\n ProjectID: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n Role: operations.CreateAccessGroupRoleAdmin.ToPointer(),\n },\n },\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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", "PROJECT_GUEST" ] }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" }, "project": { "properties": { "name": { "type": "string" }, "framework": { "nullable": true, "type": "string" }, "latestDeploymentId": { "type": "string" } }, "type": "object" } }, "required": [ "createdAt", "project", "projectId", "role", "updatedAt" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "count": { "type": "number" }, "next": { "nullable": true, "type": "string" } }, "required": [ "count", "next" ], "type": "object" } }, "required": [ "pagination", "projects" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listAccessGroupProjects", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.accessGroups.listAccessGroupProjects({\n idOrName: \"ag_pavWOn1iLObbXLRiwVvzmPrTWyTf\",\n limit: 20,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "listAccessGroupProjects", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.AccessGroups.ListAccessGroupProjects(ctx, operations.ListAccessGroupProjectsRequest{\n IDOrName: \"ag_pavWOn1iLObbXLRiwVvzmPrTWyTf\",\n Limit: vercel.Int64(20),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/access-groups/{accessGroupIdOrName}/projects": { "post": { "description": "Allows creation of an access group project", "operationId": "createAccessGroupProject", "security": [ { "bearerToken": [] } ], "summary": "Create an access group project", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "teamId": { "type": "string" }, "accessGroupId": { "type": "string" }, "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ] }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" } }, "required": [ "accessGroupId", "createdAt", "projectId", "role", "teamId", "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "accessGroupIdOrName", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "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", "example": "ADMIN", "description": "The project role that will be added to this Access Group.", "enum": [ "ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER" ] } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "createAccessGroupProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.accessGroups.createAccessGroupProject({\n accessGroupIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n role: \"ADMIN\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/access-groups/{accessGroupIdOrName}/projects/{projectId}": { "get": { "description": "Allows reading an access group project", "operationId": "readAccessGroupProject", "security": [ { "bearerToken": [] } ], "summary": "Reads an access group project", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "teamId": { "type": "string" }, "accessGroupId": { "type": "string" }, "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ] }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" } }, "required": [ "accessGroupId", "createdAt", "projectId", "role", "teamId", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "accessGroupIdOrName", "in": "path", "required": true, "schema": { "type": "string" }, "examples": { "id": { "summary": "Access group ID", "value": "ag_1a2b3c4d5e6f7g8h9i0j" }, "name": { "summary": "Access group name", "value": "My Access Group" } } }, { "name": "projectId", "in": "path", "required": true, "schema": { "type": "string" }, "example": "prj_ndlgr43fadlPyCtREAqxxdyFK" }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "readAccessGroupProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.accessGroups.readAccessGroupProject({\n accessGroupIdOrName: \"ag_1a2b3c4d5e6f7g8h9i0j\",\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Allows update of an access group project", "operationId": "updateAccessGroupProject", "security": [ { "bearerToken": [] } ], "summary": "Update an access group project", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "teamId": { "type": "string" }, "accessGroupId": { "type": "string" }, "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ] }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" } }, "required": [ "accessGroupId", "createdAt", "projectId", "role", "teamId", "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "accessGroupIdOrName", "in": "path", "required": true, "schema": { "type": "string" }, "examples": { "id": { "summary": "Access group ID", "value": "ag_1a2b3c4d5e6f7g8h9i0j" }, "name": { "summary": "Access group name", "value": "My Access Group" } } }, { "name": "projectId", "in": "path", "required": true, "schema": { "type": "string" }, "example": "prj_ndlgr43fadlPyCtREAqxxdyFK" }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "role" ], "properties": { "role": { "type": "string", "example": "ADMIN", "description": "The project role that will be added to this Access Group.", "enum": [ "ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER", null ] } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateAccessGroupProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.accessGroups.updateAccessGroupProject({\n accessGroupIdOrName: \"ag_1a2b3c4d5e6f7g8h9i0j\",\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n role: \"ADMIN\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Allows deletion of an access group project", "operationId": "deleteAccessGroupProject", "security": [ { "bearerToken": [] } ], "summary": "Delete an access group project", "tags": [ "access-groups" ], "responses": { "200": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "accessGroupIdOrName", "in": "path", "required": true, "schema": { "type": "string" }, "examples": { "id": { "summary": "Access group ID", "value": "ag_1a2b3c4d5e6f7g8h9i0j" }, "name": { "summary": "Access group name", "value": "My Access Group" } } }, { "name": "projectId", "in": "path", "required": true, "schema": { "type": "string" }, "example": "prj_ndlgr43fadlPyCtREAqxxdyFK" }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteAccessGroupProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.accessGroups.deleteAccessGroupProject({\n accessGroupIdOrName: \"ag_1a2b3c4d5e6f7g8h9i0j\",\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/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": "The request is not authorized." }, "402": { "description": "The 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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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 } } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "recordEvents", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.artifacts.recordEvents({\n xArtifactClientCi: \"VERCEL\",\n xArtifactClientInteractive: 0,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: [\n {\n sessionId: \"\",\n source: \"REMOTE\",\n event: \"MISS\",\n hash: \"12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n duration: 400,\n },\n ],\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "recordEvents", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Artifacts.RecordEvents(ctx, operations.RecordEventsRequest{\n XArtifactClientCi: vercel.String(\"VERCEL\"),\n XArtifactClientInteractive: vercel.Int64(0),\n RequestBody: []operations.RequestBody{\n operations.RequestBody{\n SessionID: \"\",\n Source: operations.SourceLocal,\n Event: operations.EventHit,\n Hash: \"12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n Duration: vercel.Float64(400),\n },\n },\n })\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/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": { "oneOf": [ { "properties": { "status": { "type": "string" } }, "required": [ "status" ], "type": "object" }, { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled", "over_limit", "paused" ] } }, "required": [ "status" ], "type": "object" } ] } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "status", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.artifacts.status({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "status", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Artifacts.Status(ctx, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v8/artifacts/{hash}": { "put": { "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": "The request is not authorized." }, "402": { "description": "The 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": false, "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'" }, { "in": "header", "description": "The SHA of the source control revision that generated this artifact.", "required": false, "schema": { "type": "string", "description": "The SHA of the source control revision that generated this artifact.", "maxLength": 200 }, "name": "'x-Artifact-Sha'" }, { "in": "header", "description": "A hash representing uncommitted changes in the working directory when this artifact was generated.", "required": false, "schema": { "type": "string", "description": "A hash representing uncommitted changes in the working directory when this artifact was generated.", "maxLength": 200 }, "name": "'x-Artifact-Dirty-Hash'" }, { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } }, "required": true }, "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "uploadArtifact", "source": "import { Vercel } from \"@vercel/sdk\";\nimport { openAsBlob } from \"node:fs\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.artifacts.uploadArtifact({\n xArtifactDuration: 400,\n xArtifactClientCi: \"VERCEL\",\n xArtifactClientInteractive: 0,\n xArtifactTag: \"Tc0BmHvJYMIYJ62/zx87YqO0Flxk+5Ovip25NY825CQ=\",\n hash: \"12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: await openAsBlob(\"example.file\"),\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "uploadArtifact", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Artifacts.UploadArtifact(ctx, operations.UploadArtifactRequest{\n ContentLength: 4504.13,\n XArtifactDuration: vercel.Float64(400),\n XArtifactClientCi: vercel.String(\"VERCEL\"),\n XArtifactClientInteractive: vercel.Int64(0),\n XArtifactTag: vercel.String(\"Tc0BmHvJYMIYJ62/zx87YqO0Flxk+5Ovip25NY825CQ=\"),\n Hash: \"12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "402": { "description": "The 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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "downloadArtifact", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.artifacts.downloadArtifact({\n xArtifactClientCi: \"VERCEL\",\n xArtifactClientInteractive: 0,\n hash: \"12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "downloadArtifact", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Artifacts.DownloadArtifact(ctx, operations.DownloadArtifactRequest{\n XArtifactClientCi: vercel.String(\"VERCEL\"),\n XArtifactClientInteractive: vercel.Int64(0),\n Hash: \"12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.ResponseStream != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "402": { "description": "The 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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "artifactExists", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.artifacts.artifactExists({\n hash: \"12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "artifactExists", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Artifacts.ArtifactExists(ctx, \"12HKQaOmR5t5Uy6vdcQsNIiZgHGB\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/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" }, "sha": { "type": "string" }, "dirtyHash": { "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": "The request is not authorized." }, "402": { "description": "The 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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "hashes" ], "properties": { "hashes": { "items": { "type": "string" }, "description": "artifact hashes", "type": "array", "example": [ "12HKQaOmR5t5Uy6vdcQsNIiZgHGB", "34HKQaOmR5t5Uy6vasdasdasdasd" ] } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "artifactQuery", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.artifacts.artifactQuery({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n hashes: [\n \"12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n \"34HKQaOmR5t5Uy6vasdasdasdasd\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "artifactQuery", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Artifacts.ArtifactQuery(ctx, nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/billing/charges": { "get": { "description": "Returns the billing charge data in FOCUS v1.3 JSONL format for a specified Vercel team, within a date range specified by `from` and `to` query parameters. Supports 1-day granularity with a maximum date range of 1 year. The response is streamed as newline-delimited JSON (JSONL) and can be optionally compressed with gzip if the `Accept-Encoding: gzip` header is provided. This is only available for Owner, Member, Developer, Security, Billing, and Enterprise Viewer roles for the supplied team.", "operationId": "listBillingCharges", "security": [ { "bearerToken": [] } ], "summary": "List FOCUS billing charges", "tags": [ "billing" ], "responses": { "200": { "description": "", "content": { "application/jsonl": { "schema": { "properties": { "BilledCost": { "type": "number", "description": "Charge amount serving as the basis for invoicing" }, "BillingCurrency": { "type": "string", "enum": [ "USD" ], "description": "Currency used for billing (ISO 4217)" }, "ChargeCategory": { "type": "string", "enum": [ "Adjustment", "Credit", "Purchase", "Tax", "Usage" ], "description": "Classification of the charge" }, "ChargePeriodStart": { "type": "string", "description": "Inclusive start of the charge period (ISO 8601 UTC)" }, "ChargePeriodEnd": { "type": "string", "description": "Exclusive end of the charge period (ISO 8601 UTC) - Required in v1.3" }, "ConsumedQuantity": { "nullable": true, "type": "number", "description": "Volume of resource consumed. Null when a charge does not involve measurable consumption quantity." }, "ConsumedUnit": { "nullable": true, "type": "string", "description": "Unit of measurement for consumed quantity. Null when the charge is not measured in units." }, "EffectiveCost": { "type": "number", "description": "Amortized cost representation including discounts, pre-commitment credit purchase amount, etc." }, "RegionId": { "type": "string", "description": "Provider-assigned region identifier" }, "RegionName": { "type": "string", "description": "Display name for the region" }, "ServiceName": { "type": "string", "description": "Display name for the service/product" }, "ServiceCategory": { "type": "string", "enum": [ "AI and Machine Learning", "Analytics", "Business Applications", "Compute", "Databases", "Developer Tools", "Multicloud", "Identity", "Integration", "Internet of Things", "Management and Governance", "Media", "Migration", "Mobile", "Networking", "Security", "Storage", "Web", "Other" ], "description": "High-level category of the service" }, "ServiceProviderName": { "type": "string", "description": "Entity making the resource/service available for purchase (v1.3)" }, "Tags": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Charge metadata including the Vercel ProjectId and ProjectName information" }, "PricingCategory": { "type": "string", "enum": [ "Other", "Standard", "Dynamic", "Committed" ], "description": "Pricing model used for the charge." }, "PricingCurrency": { "type": "string", "enum": [ "USD" ] }, "PricingQuantity": { "type": "number" }, "PricingUnit": { "type": "string" } }, "required": [ "BilledCost", "BillingCurrency", "ChargeCategory", "ChargePeriodEnd", "ChargePeriodStart", "ConsumedQuantity", "ConsumedUnit", "EffectiveCost", "PricingCategory", "PricingCurrency", "PricingQuantity", "PricingUnit", "ServiceName", "ServiceProviderName", "Tags" ], "type": "object", "description": "Extension of the base schema for Focus charges. Includes pricing information for all customers." } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" }, "503": { "description": "" } }, "parameters": [ { "name": "from", "description": "Inclusive start of the date range as an ISO 8601 date-time string in UTC.", "in": "query", "required": true, "schema": { "type": "string", "description": "Inclusive start of the date range as an ISO 8601 date-time string in UTC.", "example": "2025-01-01T00:00:00.000Z" } }, { "name": "to", "description": "Exclusive end of the date range as an ISO 8601 date-time string in UTC.", "in": "query", "required": true, "schema": { "type": "string", "description": "Exclusive end of the date range as an ISO 8601 date-time string in UTC.", "example": "2025-01-31T00:00:00.000Z" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "curl", "label": "cURL", "source": "curl -N --request GET \\\n --url 'https://api.vercel.com/v1/billing/charges?teamId=&from=&to=' \\\n --header 'Authorization: Bearer ' \\\n --header 'Accept-Encoding: gzip' \\\n --compressed\n" }, { "lang": "typescript", "label": "listBillingCharges", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.billing.listBillingCharges({\n from: \"2025-01-01T00:00:00.000Z\",\n to: \"2025-01-31T00:00:00.000Z\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n for await (const event of result) {\n // Handle the event\n console.log(event);\n }\n}\n\nrun();" } ] } }, "/v1/billing/contract-commitments": { "get": { "description": "Returns commitment allocations per contract period in FOCUS v1.3 JSONL format for a specified Vercel team. The response is streamed as newline-delimited JSON (JSONL). This endpoint is only applicable to Enterprise Vercel customers. An empty response is returned for non-Enterprise (Pro/Flex) customers.", "operationId": "listContractCommitments", "security": [ { "bearerToken": [] } ], "summary": "List FOCUS contract commitments", "tags": [ "billing" ], "responses": { "200": { "description": "", "content": { "application/jsonl": { "schema": { "properties": { "ContractCommitmentCategory": { "type": "string", "enum": [ "Usage", "Spend" ], "description": "Highest-level classification of the contract commitment. 'Spend' for Pro ($20/month), 'Usage' for Enterprise (MIU allocation)." }, "ContractCommitmentCost": { "type": "number", "description": "Monetary value of the contract commitment (in BillingCurrency). Required when ContractCommitmentCategory is 'Spend'. For Pro: 20 (USD)" }, "ContractCommitmentDescription": { "type": "string", "description": "Self-contained summary of the contract commitment's terms" }, "ContractCommitmentId": { "type": "string", "description": "Unique identifier for a single contract term within a contract. Maps to specific commitment period or allocation ID." }, "ContractCommitmentPeriodStart": { "type": "string", "description": "Inclusive start of the commitment term period (ISO 8601 UTC)" }, "ContractCommitmentPeriodEnd": { "type": "string", "description": "Exclusive end of the commitment term period (ISO 8601 UTC)" }, "ContractCommitmentQuantity": { "type": "number", "description": "Amount associated with the commitment (in ContractCommitmentUnit). Required when ContractCommitmentCategory is 'Usage'. For Enterprise: MIU allocation amount." }, "ContractCommitmentType": { "type": "string", "description": "Service-provider-assigned name identifying the commitment type. 'Pro' or 'Enterprise' for Vercel." }, "ContractCommitmentUnit": { "type": "string", "description": "Measurement unit for ContractCommitmentQuantity. 'MIUs' for Enterprise, 'USD' for Pro spend commitments." }, "ContractId": { "type": "string", "description": "Service-provider-assigned identifier for a contract. Maps to Orb Subscription ID for Vercel." }, "ContractPeriodStart": { "type": "string", "description": "Inclusive start of the overall contract period (ISO 8601 UTC)" }, "ContractPeriodEnd": { "type": "string", "description": "Exclusive end of the overall contract period (ISO 8601 UTC)" }, "BillingCurrency": { "type": "string" } }, "required": [ "BillingCurrency", "ContractCommitmentCategory", "ContractCommitmentId", "ContractCommitmentPeriodEnd", "ContractCommitmentPeriodStart", "ContractCommitmentType", "ContractCommitmentUnit", "ContractId", "ContractPeriodEnd", "ContractPeriodStart" ], "type": "object", "description": "Contract commitment information describing terms within a contract. New in FOCUS v1.3 - tracks commitment terms separate from cost/usage rows. For Vercel: - Pro: $20 monthly spend commitment - Enterprise: MIU allocation per period (usage commitment)" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listContractCommitments", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.billing.listContractCommitments({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n for await (const event of result) {\n // Handle the event\n console.log(event);\n }\n}\n\nrun();" } ] } }, "/v1/billing/buy": { "post": { "description": "Purchases credits for a Vercel team using the default payment method on file. The purchase is charged immediately via Stripe invoice. Supported credit types are `v0`, `gateway`, and `agent`. The `amount` field specifies the number of credits to purchase and must be a positive integer. An optional `source` query parameter can be provided to identify the caller. Defaults to `api` if not specified. This is only available for Owner, Member, Developer, Security, and Billing roles for the supplied team.", "operationId": "buyCredits", "security": [ { "bearerToken": [] } ], "summary": "Purchase credits", "tags": [ "billing" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "checkoutSessionId": { "type": "string" }, "checkoutSessionUrl": { "type": "string" } }, "required": [ "checkoutSessionId", "checkoutSessionUrl" ], "type": "object" }, { "properties": { "purchaseIntent": { "properties": { "id": { "type": "string", "description": "The unique ID of a Purchase Intent. Uses the format `pur_*`" }, "configuration": { "oneOf": [ { "properties": { "options": { "properties": { "amount": { "type": "string", "description": "The amount of currency to buy" }, "currency": { "type": "string", "enum": [ "copper_test_units", "ai_credits", "ai_gateway_credits", "v0_user_credits", "vercel_agent_credits" ], "description": "The currency being purchased" }, "expirationDate": { "type": "string", "description": "The expiration date of the credits being purchased" } }, "required": [ "amount", "currency" ], "type": "object", "description": "Purchase configuration specific options" }, "output": { "nullable": true }, "type": { "type": "string", "enum": [ "credit_topup" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" }, { "properties": { "options": { "properties": { "items": { "items": { "properties": { "name": { "type": "string" }, "subtotal": { "type": "string", "description": "The subtotal of the domain name purchase" }, "type": { "type": "string", "enum": [ "purchase", "renewal", "transfer" ] }, "years": { "type": "number", "description": "The number of years to purchase" } }, "required": [ "name", "subtotal", "type", "years" ], "type": "object" }, "type": "array" }, "orderId": { "type": "string", "description": "The order ID of the domain name purchase" } }, "required": [ "items", "orderId" ], "type": "object" }, "output": { "nullable": true }, "type": { "type": "string", "enum": [ "domain_name" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" }, { "properties": { "options": { "properties": { "effectiveDate": { "oneOf": [ { "type": "object", "description": "The effective date of the plan change" }, { "type": "string", "enum": [ "immediate", "end_of_subscription_term" ] } ] }, "orbSubscriptionId": { "type": "string", "description": "The ID of the Orb subscription to change" }, "alignBillingWithPlanChangeDate": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to reset the billing cycle" }, "couponRedemptionCode": { "type": "string", "description": "The coupon redemption code to apply to the plan change" }, "externalPlanId": { "type": "string", "description": "The ID of the external plan to change to" }, "replacePrices": { "items": { "properties": { "fixedPriceQuantity": { "type": "number", "description": "The quantity for the fixed price" }, "replacesPriceId": { "type": "string", "description": "The ID of the price to replace" } }, "required": [ "fixedPriceQuantity", "replacesPriceId" ], "type": "object", "description": "The prices to replace in the subscription" }, "type": "array", "description": "The prices to replace in the subscription" } }, "required": [ "effectiveDate", "orbSubscriptionId" ], "type": "object" }, "output": { "properties": { "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change" } }, "required": [ "pendingSubscriptionChangeId" ], "type": "object" }, "type": { "type": "string", "enum": [ "orb_plan_change" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" }, { "properties": { "options": { "type": "object" }, "output": { "properties": { "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change" } }, "required": [ "pendingSubscriptionChangeId" ], "type": "object" }, "type": { "type": "string", "enum": [ "orb_price_interval" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" }, { "properties": { "options": { "properties": { "externalPlanId": { "type": "string", "description": "The external plan ID of the Orb plan to subscribe to" }, "addPrices": { "items": { "oneOf": [ { "properties": { "priceId": { "type": "string", "description": "The ID of the price to add" } }, "required": [ "priceId" ], "type": "object", "description": "The prices to add to the subscription" }, { "type": "object", "description": "The prices to add to the subscription" } ] }, "type": "array", "description": "The prices to add to the subscription" }, "alignBillingWithSubscriptionStartDate": { "type": "boolean", "enum": [ false, true ], "description": "Whether to align the subscription start date with the billing subscription start date" }, "couponRedemptionCode": { "type": "string", "description": "The coupon redemption code to apply to the subscription" }, "initialPhaseOrder": { "type": "number", "description": "The initial phase order to use for the subscription" }, "metadata": { "additionalProperties": { "nullable": true, "type": "string", "description": "Optional metadata to associate with the subscription" }, "type": "object", "description": "Optional metadata to associate with the subscription" }, "removePrices": { "items": { "properties": { "priceId": { "type": "string", "description": "The ID of the price to remove" } }, "required": [ "priceId" ], "type": "object", "description": "The prices to remove in the subscription" }, "type": "array", "description": "The prices to remove in the subscription" }, "replacePrices": { "items": { "properties": { "fixedPriceQuantity": { "type": "number", "description": "The quantity for the fixed price" }, "replacesPriceId": { "type": "string", "description": "The ID of the price to replace" } }, "required": [ "fixedPriceQuantity", "replacesPriceId" ], "type": "object", "description": "The prices to replace in the subscription" }, "type": "array", "description": "The prices to replace in the subscription" }, "startDate": { "type": "string", "description": "The start date of the subscription" } }, "required": [ "externalPlanId" ], "type": "object" }, "output": { "properties": { "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change" } }, "required": [ "pendingSubscriptionChangeId" ], "type": "object" }, "type": { "type": "string", "enum": [ "orb_subscription" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" }, { "properties": { "options": { "properties": { "orbCustomerId": { "type": "string", "description": "The ID of the Orb customer to create" }, "orbExternalCustomerId": { "type": "string", "description": "The external ID of the Orb customer to create" }, "orbExternalPlanId": { "type": "string", "description": "The external ID of the Orb plan to create" }, "orbPendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change" }, "orbPlanId": { "type": "string", "description": "The ID of the Orb plan to create" }, "orbSubscriptionId": { "type": "string", "description": "The ID of the Orb subscription to create" }, "lineItems": { "items": { "properties": { "id": { "type": "string", "description": "The ID of the line item" }, "description": { "type": "string", "description": "The description of the line item" }, "name": { "type": "string", "description": "The name of the line item" }, "productId": { "type": "string", "description": "The ID of the product being purchased" }, "quantity": { "type": "string", "description": "The quantity of the line item" }, "unitAmount": { "type": "string", "description": "The unit amount of the line item" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata for the line item" }, "productAlias": { "type": "string", "description": "The alias of the product being purchased" }, "refund": { "type": "string", "description": "The amount of the line item that has been refunded" } }, "required": [ "description", "id", "name", "productId", "quantity", "unitAmount" ], "type": "object", "description": "The line items that make up the Purchase Intent." }, "type": "array", "description": "The line items that make up the Purchase Intent." } }, "required": [ "orbCustomerId", "orbExternalCustomerId", "orbExternalPlanId", "orbPendingSubscriptionChangeId", "orbPlanId", "orbSubscriptionId" ], "type": "object" }, "output": { "properties": { "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change" } }, "required": [ "pendingSubscriptionChangeId" ], "type": "object" }, "type": { "type": "string", "enum": [ "orb_subscription_intent" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" } ] }, "createdAt": { "type": "string", "description": "The datetime when the Purchase Intent was created." }, "currency": { "type": "string", "enum": [ "usd", "miu" ], "description": "The currency for the purchase intent" }, "ownerId": { "type": "string", "description": "The ID of the owner of the Purchase Intent." }, "provider": { "properties": { "resourceId": { "type": "string", "description": "Provider resource id" }, "type": { "type": "string", "enum": [ "stripe_elements", "stripe_hosted", "stripe_invoice_deferred", "stripe_invoice_immediate", "stripe_invoice_elements", "tackle_aws_marketplace", "orb_ledger", "apple_in_app_purchase" ], "description": "The type of the purchase provider" }, "currencyConversionRate": { "type": "string", "description": "The currency conversion rate used by the provider" }, "stripeSharedPaymentTokenUsed": { "type": "boolean", "enum": [ false, true ], "description": "Whether a Stripe Shared Payment Token was used for this purchase. Only applicable when type is stripe_invoice_immediate." } }, "required": [ "resourceId", "type" ], "type": "object" }, "status": { "type": "string", "enum": [ "pending", "succeeded", "failed" ], "description": "The status of the Purchase Intent." }, "subtotal": { "type": "string", "description": "The subtotal of the Purchase Intent." }, "tax": { "type": "string", "description": "The tax due on the Purchase Intent." }, "total": { "type": "string", "description": "The total balance due on the Purchase Intent." }, "updatedAt": { "type": "string", "description": "The datetime when the Purchase Intent was last updated." }, "dispute": { "properties": { "id": { "type": "string", "description": "The unique ID of the dispute entity." }, "amount": { "type": "string", "description": "The disputed amount." }, "createdAt": { "type": "string", "description": "When the dispute was first recorded." }, "currency": { "type": "string", "description": "The dispute currency." }, "providerId": { "type": "string", "description": "The external provider dispute ID (e.g. Stripe dispute ID)." }, "reason": { "nullable": true, "type": "string", "description": "The dispute reason." }, "status": { "type": "string", "description": "The dispute status." }, "updatedAt": { "type": "string", "description": "When the dispute was last updated." } }, "required": [ "amount", "createdAt", "currency", "id", "providerId", "reason", "status", "updatedAt" ], "type": "object", "description": "The dispute details, if any." }, "lineItems": { "items": { "properties": { "id": { "type": "string", "description": "The ID of the line item" }, "description": { "type": "string", "description": "The description of the line item" }, "name": { "type": "string", "description": "The name of the line item" }, "productId": { "type": "string", "description": "The ID of the product being purchased" }, "quantity": { "type": "string", "description": "The quantity of the line item" }, "unitAmount": { "type": "string", "description": "The unit amount of the line item" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata for the line item" }, "productAlias": { "type": "string", "description": "The alias of the product being purchased" }, "refund": { "type": "string", "description": "The amount of the line item that has been refunded" } }, "required": [ "description", "id", "name", "productId", "quantity", "unitAmount" ], "type": "object", "description": "The line items that make up the Purchase Intent." }, "type": "array", "description": "The line items that make up the Purchase Intent." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the purchase intent" }, "refund": { "type": "string", "description": "The amount of the purchase intent that has been refunded" }, "returnUrl": { "type": "string", "description": "The URL to redirect to after the purchase is complete" } }, "required": [ "configuration", "createdAt", "currency", "id", "ownerId", "provider", "status", "subtotal", "tax", "total", "updatedAt" ], "type": "object", "description": "The created purchase intent" } }, "required": [ "purchaseIntent" ], "type": "object" }, { "properties": { "orbSubscriptionIntent": { "properties": { "id": { "type": "string", "description": "The ID of the Orb subscription intent with the format `orbsubint_`." }, "configuration": { "oneOf": [ { "properties": { "options": { "properties": { "productAlias": { "type": "string", "description": "The alias of the product to set quantity for." }, "quantity": { "type": "number", "description": "The quantity to set for the plan item." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs for the plan item. Only set if SKU requires resource entitlements." } }, "required": [ "productAlias", "quantity" ], "type": "object", "description": "Configuration input options for setting plan item quantity." }, "output": { "properties": { "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "changedResources": { "items": { "oneOf": [ { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "type": { "type": "string", "enum": [ "set_plan_item_quantity" ] }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The full set of resource IDs after the set operation." } }, "required": [ "productAlias", "productId", "quantity", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "type": { "type": "string", "enum": [ "increase_plan_item_quantity" ] } }, "required": [ "productAlias", "productId", "quantity", "resourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were removed." }, "type": { "type": "string", "enum": [ "decrease_plan_item_quantity" ] } }, "required": [ "productAlias", "productId", "quantity", "resourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "addedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "removedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were removed." }, "type": { "type": "string", "enum": [ "adjust_plan_item_quantity" ] } }, "required": [ "addedResourceIds", "productAlias", "productId", "quantity", "removedResourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." } ] }, "type": "array", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." } }, "required": [ "orbPriceId", "productId" ], "type": "object", "description": "Output returned after configuring an OrbSubscriptionIntent." }, "type": { "type": "string", "enum": [ "set_plan_item_quantity" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "Configuration for the Orb subscription intent." }, { "properties": { "options": { "properties": { "productAlias": { "type": "string", "description": "The alias of the product to increase quantity for." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs to incrementally add. The quantity of the plan item will be increased by the number of resource IDs." } }, "required": [ "productAlias", "resourceIds" ], "type": "object", "description": "Configuration input options for increasing plan item quantity." }, "output": { "properties": { "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "changedResources": { "items": { "oneOf": [ { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "type": { "type": "string", "enum": [ "set_plan_item_quantity" ] }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The full set of resource IDs after the set operation." } }, "required": [ "productAlias", "productId", "quantity", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "type": { "type": "string", "enum": [ "increase_plan_item_quantity" ] } }, "required": [ "productAlias", "productId", "quantity", "resourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were removed." }, "type": { "type": "string", "enum": [ "decrease_plan_item_quantity" ] } }, "required": [ "productAlias", "productId", "quantity", "resourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "addedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "removedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were removed." }, "type": { "type": "string", "enum": [ "adjust_plan_item_quantity" ] } }, "required": [ "addedResourceIds", "productAlias", "productId", "quantity", "removedResourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." } ] }, "type": "array", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." } }, "required": [ "orbPriceId", "productId" ], "type": "object", "description": "Output returned after configuring an OrbSubscriptionIntent." }, "type": { "type": "string", "enum": [ "increase_plan_item_quantity" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "Configuration for the Orb subscription intent." }, { "properties": { "options": { "properties": { "productAlias": { "type": "string", "description": "The alias of the product to decrease quantity for." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs to decrementally remove. The quantity of the plan item will be decreased by the number of resource IDs." } }, "required": [ "productAlias", "resourceIds" ], "type": "object", "description": "Configuration input options for decreasing plan item quantity." }, "output": { "properties": { "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "changedResources": { "items": { "oneOf": [ { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "type": { "type": "string", "enum": [ "set_plan_item_quantity" ] }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The full set of resource IDs after the set operation." } }, "required": [ "productAlias", "productId", "quantity", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "type": { "type": "string", "enum": [ "increase_plan_item_quantity" ] } }, "required": [ "productAlias", "productId", "quantity", "resourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were removed." }, "type": { "type": "string", "enum": [ "decrease_plan_item_quantity" ] } }, "required": [ "productAlias", "productId", "quantity", "resourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "addedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "removedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were removed." }, "type": { "type": "string", "enum": [ "adjust_plan_item_quantity" ] } }, "required": [ "addedResourceIds", "productAlias", "productId", "quantity", "removedResourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." } ] }, "type": "array", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." } }, "required": [ "orbPriceId", "productId" ], "type": "object", "description": "Output returned after configuring an OrbSubscriptionIntent." }, "type": { "type": "string", "enum": [ "decrease_plan_item_quantity" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "Configuration for the Orb subscription intent." }, { "properties": { "options": { "properties": { "addedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs to incrementally add. The quantity of the plan item will be increased by the number of resource IDs." }, "productAlias": { "type": "string", "description": "The alias of the product to adjust quantity for." }, "removedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs to incrementally remove. The quantity of the plan item will be decreased by the number of resource IDs." } }, "required": [ "addedResourceIds", "productAlias", "removedResourceIds" ], "type": "object", "description": "Configuration input options for adjusting plan item quantity." }, "output": { "properties": { "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "changedResources": { "items": { "oneOf": [ { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "type": { "type": "string", "enum": [ "set_plan_item_quantity" ] }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The full set of resource IDs after the set operation." } }, "required": [ "productAlias", "productId", "quantity", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "type": { "type": "string", "enum": [ "increase_plan_item_quantity" ] } }, "required": [ "productAlias", "productId", "quantity", "resourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were removed." }, "type": { "type": "string", "enum": [ "decrease_plan_item_quantity" ] } }, "required": [ "productAlias", "productId", "quantity", "resourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, { "properties": { "addedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "removedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were removed." }, "type": { "type": "string", "enum": [ "adjust_plan_item_quantity" ] } }, "required": [ "addedResourceIds", "productAlias", "productId", "quantity", "removedResourceIds", "type" ], "type": "object", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." } ] }, "type": "array", "description": "Resources that were changed as part of this intent. Tracks all logical changes including the primary change and any side effects." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." } }, "required": [ "orbPriceId", "productId" ], "type": "object", "description": "Output returned after configuring an OrbSubscriptionIntent." }, "type": { "type": "string", "enum": [ "adjust_plan_item_quantity" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "Configuration for the Orb subscription intent." } ] }, "createdAt": { "type": "string", "description": "The ISO 8601 date-time that the intent was created." }, "orbSubscriptionId": { "type": "string", "description": "The Orb subscription ID this intent is associated with." }, "ownerId": { "type": "string", "description": "The owner ID for this intent (e.g., team or user ID)." }, "status": { "type": "string", "enum": [ "pending", "succeeded", "failed" ], "description": "The status of the Orb subscription intent." }, "updatedAt": { "type": "string", "description": "The ISO 8601 date-time that the intent was last updated." }, "purchaseIntentId": { "type": "string", "description": "Optional purchase intent ID if this is associated with a purchase." } }, "required": [ "configuration", "createdAt", "id", "orbSubscriptionId", "ownerId", "status", "updatedAt" ], "type": "object" } }, "required": [ "orbSubscriptionIntent" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "source", "description": "The source of the purchase request. Defaults to `api` if not specified.", "in": "query", "schema": { "type": "string", "description": "The source of the purchase request. Defaults to `api` if not specified." } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "item" ], "properties": { "item": { "type": "object", "required": [ "type", "creditType", "amount" ], "properties": { "type": { "type": "string", "enum": [ "credits" ], "description": "The type of item to purchase." }, "creditType": { "type": "string", "enum": [ "v0", "gateway", "agent" ], "description": "The type of credits to purchase." }, "amount": { "type": "integer", "minimum": 1, "description": "The amount of credits to purchase." } } } } } } } }, "x-codeSamples": [ { "lang": "curl", "label": "cURL", "source": "curl --request POST \\\n --url 'https://api.vercel.com/v1/billing/buy?teamId=' \\\n --header 'Authorization: Bearer ' \\\n --header 'Content-Type: application/json' \\\n --data '{\"item\":{\"type\":\"credits\",\"creditType\":\"v0\",\"amount\":100}}'\n" }, { "lang": "typescript", "label": "buyCredits", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.billing.buyCredits({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n item: {\n type: \"credits\",\n creditType: \"agent\",\n amount: 890808,\n },\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/bulk-redirects": { "put": { "description": "Stages new redirects for a project and returns the new version.", "operationId": "stageRedirects", "security": [ { "bearerToken": [] } ], "summary": "Stages new redirects for a project.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "alias": { "nullable": true, "type": "string" }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "alias", "version" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "500": { "description": "" } }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "projectId", "teamId" ], "properties": { "projectId": { "type": "string" }, "teamId": { "type": "string" }, "overwrite": { "type": "boolean" }, "name": { "type": "string", "maxLength": 256 }, "redirects": { "type": "array", "default": [], "items": { "type": "object", "required": [ "source", "destination" ], "properties": { "source": { "type": "string", "maxLength": 2048 }, "destination": { "type": "string", "maxLength": 2048 }, "statusCode": { "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "permanent": { "type": "boolean" }, "caseSensitive": { "type": "boolean" }, "query": { "type": "boolean" }, "preserveQueryParams": { "type": "boolean" } } } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "stageRedirects", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.bulkRedirects.stageRedirects({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "description": "Get the version history for a project's bulk redirects", "operationId": "getRedirects", "security": [ { "bearerToken": [] } ], "summary": "Gets project-level redirects.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": true }, { "properties": { "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" }, "redirects": { "items": { "properties": { "statusCode": { "type": "number" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "sensitive": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "query": { "type": "boolean", "enum": [ false, true ] }, "preserveQueryParams": { "type": "boolean", "enum": [ false, true ] }, "destination": { "type": "string" }, "source": { "type": "string" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "page": { "type": "number" }, "per_page": { "type": "number" }, "numPages": { "type": "number" } }, "required": [ "numPages", "page", "per_page" ], "type": "object" } }, "required": [ "pagination", "redirects", "version" ], "type": "object" }, { "properties": { "redirects": { "items": { "properties": { "statusCode": { "type": "number" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "sensitive": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "query": { "type": "boolean", "enum": [ false, true ] }, "preserveQueryParams": { "type": "boolean", "enum": [ false, true ] }, "destination": { "type": "string" }, "source": { "type": "string" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" }, "pagination": { "properties": { "page": { "type": "number" }, "per_page": { "type": "number" }, "numPages": { "type": "number" } }, "required": [ "numPages", "page", "per_page" ], "type": "object" } }, "required": [ "pagination", "redirects" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "projectId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "versionId", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "diff", "in": "query", "required": false, "schema": { "oneOf": [ { "type": "boolean" }, { "type": "string", "enum": [ "only" ] } ] } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1 } }, { "name": "per_page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 10, "maximum": 250 } }, { "name": "sort_by", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "source", "destination", "statusCode" ] } }, { "name": "sort_order", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "asc", "desc" ] } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getRedirects", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.bulkRedirects.getRedirects({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Deletes the provided redirects from the latest version of the projects' bulk redirects. Stages a new change with the new redirects and returns the alias for the new version in the response.", "operationId": "deleteRedirects", "security": [ { "bearerToken": [] } ], "summary": "Delete project-level redirects.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "alias": { "type": "string" }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "version" ], "type": "object" }, { "properties": { "alias": { "nullable": true }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "alias", "version" ], "type": "object" }, { "properties": { "alias": { "nullable": true, "type": "string" }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "alias", "version" ], "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "maxLength": 256 }, "redirects": { "description": "The redirects to delete. The source of the redirect is used to match the redirect to delete.", "type": "array", "minItems": 1, "items": { "type": "string" } } }, "required": [ "redirects" ] } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "deleteRedirects", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.bulkRedirects.deleteRedirects({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Edits a single redirect identified by its source path. Stages a new change with the modified redirect and returns the alias for the new version in the response.", "operationId": "editRedirect", "security": [ { "bearerToken": [] } ], "summary": "Edit a project-level redirect.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "alias": { "nullable": true, "type": "string" }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "alias", "version" ], "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "maxLength": 256 }, "redirect": { "description": "The redirect object to edit. The source field is used to match the redirect to modify.", "type": "object", "properties": { "source": { "type": "string" }, "destination": { "type": "string" }, "statusCode": { "type": "number" }, "permanent": { "type": "boolean" }, "caseSensitive": { "type": "boolean" }, "query": { "type": "boolean" }, "preserveQueryParams": { "type": "boolean" } }, "required": [ "source" ], "additionalProperties": false }, "restore": { "description": "If true, restores the redirect from the latest production version to staging.", "type": "boolean" } }, "required": [ "redirect" ] } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "editRedirect", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.bulkRedirects.editRedirect({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/bulk-redirects/restore": { "post": { "description": "Restores the provided redirects in the staging version to the value in the production version. If no production version exists, removes the redirects from staging.", "operationId": "restoreRedirects", "security": [ { "bearerToken": [] } ], "summary": "Restore staged project-level redirects to their production version.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" }, "restored": { "items": { "type": "string" }, "type": "array" }, "failedToRestore": { "items": { "type": "string" }, "type": "array" } }, "required": [ "failedToRestore", "restored", "version" ], "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "maxLength": 256 }, "redirects": { "description": "The redirects to restore. The source of the redirect is used to match the redirect to restore.", "type": "array", "minItems": 1, "maxItems": 100, "items": { "type": "string" } } }, "required": [ "redirects" ] } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "restoreRedirects", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.bulkRedirects.restoreRedirects({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/bulk-redirects/versions": { "get": { "description": "Get the version history for a project's bulk redirects", "operationId": "getVersions", "security": [ { "bearerToken": [] } ], "summary": "Get the version history for a project's redirects.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "versions": { "items": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" }, "type": "array" } }, "required": [ "versions" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getVersions", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.bulkRedirects.getVersions({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Update a version by promoting staging to production or restoring a previous production version", "operationId": "updateVersion", "security": [ { "bearerToken": [] } ], "summary": "Promote a staging version to production or restore a previous production version.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "version" ], "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "id", "action" ], "properties": { "id": { "type": "string" }, "action": { "type": "string", "enum": [ "promote", "restore", "discard" ] }, "name": { "type": "string", "maxLength": 256 } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateVersion", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.bulkRedirects.updateVersion({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/projects/{projectIdOrName}/checks": { "get": { "description": "List all checks for a project, optionally filtered by target.", "operationId": "listProjectChecks", "security": [ { "bearerToken": [] } ], "summary": "List all checks for a project", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "checks": { "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "blocks": { "type": "string", "enum": [ "none", "build-start", "deployment-start", "deployment-alias", "deployment-promotion" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "sourceKind": { "type": "string", "enum": [ "integration", "webhook", "git-provider", "vercel", "integration", "webhook", "git-provider" ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deletedAt": { "type": "number" } }, "required": [ "blocks", "createdAt", "id", "isRerequestable", "name", "ownerId", "projectId", "requires", "source", "sourceKind", "targets", "timeout", "updatedAt" ], "type": "object" }, "type": "array" } }, "required": [ "checks" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "500": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "blocks", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "build-start", "deployment-start", "deployment-alias", "deployment-promotion", "none" ] } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listProjectChecks", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.checksV2.listProjectChecks({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Creates a new check for a project.", "operationId": "createProjectCheck", "security": [ { "bearerToken": [] } ], "summary": "Create a check", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "blocks": { "type": "string", "enum": [ "none", "build-start", "deployment-start", "deployment-alias", "deployment-promotion" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "sourceKind": { "type": "string", "enum": [ "integration", "webhook", "git-provider", "vercel", "integration", "webhook", "git-provider" ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deletedAt": { "type": "number" } }, "required": [ "blocks", "createdAt", "id", "isRerequestable", "name", "ownerId", "projectId", "requires", "source", "sourceKind", "targets", "timeout", "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "500": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "properties": { "name": { "type": "string" }, "isRerequestable": { "type": "boolean" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ], "default": "deployment-url" }, "targets": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-start", "deployment-alias", "deployment-promotion", "none" ], "default": "deployment-alias" }, "source": { "type": "object", "oneOf": [ { "properties": { "kind": { "type": "string", "default": "integration" }, "externalResourceId": { "type": "string" } } }, { "properties": { "kind": { "type": "string" }, "webhookId": { "type": "string" } }, "required": [ "kind" ] }, { "properties": { "kind": { "type": "string" }, "externalCheckName": { "type": "string" }, "provider": { "type": "string", "enum": [ "github" ] } }, "required": [ "kind", "externalCheckName", "provider" ] } ] }, "timeout": { "type": "number", "default": 300 } }, "required": [ "name", "requires" ], "type": "object" } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createProjectCheck", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.checksV2.createProjectCheck({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/projects/{projectIdOrName}/checks/{checkId}": { "get": { "description": "Return a detailed response for a single check.", "operationId": "getProjectCheck", "security": [ { "bearerToken": [] } ], "summary": "Get a check", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "blocks": { "type": "string", "enum": [ "none", "build-start", "deployment-start", "deployment-alias", "deployment-promotion" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "sourceKind": { "type": "string", "enum": [ "integration", "webhook", "git-provider", "vercel", "integration", "webhook", "git-provider" ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deletedAt": { "type": "number" } }, "required": [ "blocks", "createdAt", "id", "isRerequestable", "name", "ownerId", "projectId", "requires", "source", "sourceKind", "targets", "timeout", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "500": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "checkId", "description": "The ID of the resource that will be updated.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the resource that will be updated.", "example": "stf_89ha9sdhh9a9" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getProjectCheck", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.checksV2.getProjectCheck({\n projectIdOrName: \"\",\n checkId: \"stf_89ha9sdhh9a9\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update an existing check.", "operationId": "updateProjectCheck", "security": [ { "bearerToken": [] } ], "summary": "Update a check", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "blocks": { "type": "string", "enum": [ "none", "build-start", "deployment-start", "deployment-alias", "deployment-promotion" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "sourceKind": { "type": "string", "enum": [ "integration", "webhook", "git-provider", "vercel", "integration", "webhook", "git-provider" ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deletedAt": { "type": "number" } }, "required": [ "blocks", "createdAt", "id", "isRerequestable", "name", "ownerId", "projectId", "requires", "source", "sourceKind", "targets", "timeout", "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "checkId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "properties": { "name": { "type": "string" }, "isRerequestable": { "type": "boolean" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url" ], "default": "deployment-url" }, "targets": { "type": "array", "items": { "type": "string" } }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-start", "deployment-alias", "deployment-promotion", "none" ], "default": "deployment-alias" }, "timeout": { "type": "number", "default": 300 } }, "type": "object" } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateProjectCheck", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.checksV2.updateProjectCheck({\n projectIdOrName: \"\",\n checkId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Delete an existing check and all of its runs.", "operationId": "deleteProjectCheck", "security": [ { "bearerToken": [] } ], "summary": "Delete a check", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "success": { "type": "boolean", "enum": [ true ] } }, "required": [ "success" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "checkId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteProjectCheck", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.checksV2.deleteProjectCheck({\n projectIdOrName: \"\",\n checkId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/projects/{projectIdOrName}/checks/{checkId}/runs": { "get": { "description": "List all runs associated with a given check.", "operationId": "listCheckRuns", "security": [ { "bearerToken": [] } ], "summary": "List runs for a check", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "runs": { "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "checkId": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "none", "build-start", "deployment-start", "deployment-alias", "deployment-promotion" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "queued", "running", "completed" ] }, "conclusion": { "type": "string", "enum": [ "timeout", "canceled", "skipped", "failed", "neutral", "succeeded" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object" }, "type": "array" } }, "required": [ "runs" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "500": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "checkId", "description": "The ID of the resource that will be updated.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the resource that will be updated.", "example": "ckr_89ha9sdhh9a9" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listCheckRuns", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.checksV2.listCheckRuns({\n projectIdOrName: \"\",\n checkId: \"ckr_89ha9sdhh9a9\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/deployments/{deploymentId}/check-runs": { "get": { "description": "List all check runs for a deployment.", "operationId": "listDeploymentCheckRuns", "security": [ { "bearerToken": [] } ], "summary": "List check runs for a deployment", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "runs": { "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "checkId": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "none", "build-start", "deployment-start", "deployment-alias", "deployment-promotion" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "queued", "running", "completed" ] }, "conclusion": { "type": "string", "enum": [ "timeout", "canceled", "skipped", "failed", "neutral", "succeeded" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object" }, "type": "array" } }, "required": [ "runs" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "500": { "description": "" } }, "parameters": [ { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listDeploymentCheckRuns", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.checksV2.listDeploymentCheckRuns({\n deploymentId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Creates a new check run for a deployment.", "operationId": "createDeploymentCheckRun", "security": [ { "bearerToken": [] } ], "summary": "Create a check run", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "checkId": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "none", "build-start", "deployment-start", "deployment-alias", "deployment-promotion" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "queued", "running", "completed" ] }, "conclusion": { "type": "string", "enum": [ "timeout", "canceled", "skipped", "failed", "neutral", "succeeded" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "properties": { "checkId": { "type": "string" } }, "required": [ "checkId" ], "type": "object" } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createDeploymentCheckRun", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.checksV2.createDeploymentCheckRun({\n deploymentId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/deployments/{deploymentId}/check-runs/{checkRunId}": { "get": { "description": "Return a detailed response for a single check run.", "operationId": "getDeploymentCheckRun", "security": [ { "bearerToken": [] } ], "summary": "Get a check run", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "checkId": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "none", "build-start", "deployment-start", "deployment-alias", "deployment-promotion" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "queued", "running", "completed" ] }, "conclusion": { "type": "string", "enum": [ "timeout", "canceled", "skipped", "failed", "neutral", "succeeded" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "deploymentId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "checkRunId", "description": "The ID of the resource that will be updated.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the resource that will be updated.", "example": "ckr_89ha9sdhh9a9" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getDeploymentCheckRun", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.checksV2.getDeploymentCheckRun({\n deploymentId: \"\",\n checkRunId: \"ckr_89ha9sdhh9a9\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update an existing check run for a deployment.", "operationId": "updateDeploymentCheckRun", "security": [ { "bearerToken": [] } ], "summary": "Update a check run", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "checkId": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "none", "build-start", "deployment-start", "deployment-alias", "deployment-promotion" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "queued", "running", "completed" ] }, "conclusion": { "type": "string", "enum": [ "timeout", "canceled", "skipped", "failed", "neutral", "succeeded" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "413": { "description": "The output provided is too large" }, "500": { "description": "" } }, "parameters": [ { "name": "deploymentId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "checkRunId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "properties": { "externalId": { "type": "string" }, "externalUrl": { "type": "string", "format": "uri", "pattern": "^https?://|^sso:" }, "status": { "type": "string", "enum": [ "queued", "running", "completed" ] }, "output": { "type": "object" }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "skipped", "timeout", "failed", "neutral", "succeeded" ] }, "conclusionText": { "type": "string" } }, "type": "object" } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateDeploymentCheckRun", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.checksV2.updateDeploymentCheckRun({\n deploymentId: \"\",\n checkRunId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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" ], "deprecated": true, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string", "example": "chk_1a2b3c4d5e6f7g8h9i0j" }, "name": { "type": "string", "example": "Performance Check" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deploymentId": { "type": "string" }, "status": { "type": "string", "enum": [ "running", "completed", "registered" ], "example": "completed" }, "conclusion": { "type": "string", "enum": [ "canceled", "skipped", "failed", "neutral", "succeeded", "stale" ], "example": "succeeded" }, "externalId": { "type": "string" }, "output": { "properties": { "metrics": { "properties": { "FCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "CLS": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "completedAt": { "type": "number" }, "path": { "type": "string", "example": "/api/users" }, "blocking": { "type": "boolean", "enum": [ false, true ] }, "detailsUrl": { "type": "string" }, "integrationId": { "type": "string" }, "startedAt": { "type": "number" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "blocking", "createdAt", "deploymentId", "id", "integrationId", "name", "status", "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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" } } }, "required": true }, "x-codeSamples": [ { "lang": "go", "label": "createCheck", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Checks.CreateCheck(ctx, \"dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6\", nil, nil, &operations.CreateCheckRequestBody{\n Name: \"Performance Check\",\n Path: vercel.String(\"/\"),\n Blocking: true,\n DetailsURL: vercel.String(\"http://example.com\"),\n ExternalID: vercel.String(\"1234abc\"),\n Rerequestable: vercel.Bool(true),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "get": { "description": "List all of the checks created for a deployment.", "operationId": "getAllChecks", "security": [ { "bearerToken": [] } ], "summary": "Retrieve a list of all checks", "tags": [ "checks" ], "deprecated": true, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "checks": { "items": { "properties": { "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "skipped", "failed", "neutral", "succeeded", "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": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "CLS": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "path": { "type": "string" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] }, "blocking": { "type": "boolean", "enum": [ false, true ] }, "startedAt": { "type": "number" }, "status": { "type": "string", "enum": [ "running", "completed", "registered" ] }, "updatedAt": { "type": "number" } }, "required": [ "blocking", "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "go", "label": "getAllChecks", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Checks.GetAllChecks(ctx, \"dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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" ], "deprecated": true, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deploymentId": { "type": "string" }, "status": { "type": "string", "enum": [ "running", "completed", "registered" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "skipped", "failed", "neutral", "succeeded", "stale" ] }, "externalId": { "type": "string" }, "output": { "properties": { "metrics": { "properties": { "FCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "CLS": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "completedAt": { "type": "number" }, "path": { "type": "string" }, "blocking": { "type": "boolean", "enum": [ false, true ] }, "detailsUrl": { "type": "string" }, "integrationId": { "type": "string" }, "startedAt": { "type": "number" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "blocking", "createdAt", "deploymentId", "id", "integrationId", "name", "status", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "go", "label": "getCheck", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Checks.GetCheck(ctx, \"dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6\", \"check_2qn7PZrx89yxY34vEZPD31Y9XVj6\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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" ], "deprecated": true, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deploymentId": { "type": "string" }, "status": { "type": "string", "enum": [ "running", "completed", "registered" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "skipped", "failed", "neutral", "succeeded", "stale" ] }, "externalId": { "type": "string" }, "output": { "properties": { "metrics": { "properties": { "FCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "CLS": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "completedAt": { "type": "number" }, "path": { "type": "string" }, "blocking": { "type": "boolean", "enum": [ false, true ] }, "detailsUrl": { "type": "string" }, "integrationId": { "type": "string" }, "startedAt": { "type": "number" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "blocking", "createdAt", "deploymentId", "id", "integrationId", "name", "status", "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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" } } }, "required": true }, "x-codeSamples": [ { "lang": "go", "label": "updateCheck", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Checks.UpdateCheck(ctx, operations.UpdateCheckRequest{\n DeploymentID: \"dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6\",\n CheckID: \"check_2qn7PZrx89yxY34vEZPD31Y9XVj6\",\n RequestBody: &operations.UpdateCheckRequestBody{\n Name: vercel.String(\"Performance Check\"),\n Path: vercel.String(\"/\"),\n DetailsURL: vercel.String(\"https://example.com/check/run/1234abc\"),\n Output: &operations.Output{\n Metrics: &operations.Metrics{\n Fcp: operations.Fcp{\n Value: vercel.Float64(1200),\n PreviousValue: vercel.Float64(900),\n Source: operations.UpdateCheckSourceWebVitals,\n },\n Lcp: operations.Lcp{\n Value: vercel.Float64(1200),\n PreviousValue: vercel.Float64(1000),\n Source: operations.UpdateCheckChecksSourceWebVitals,\n },\n Cls: operations.Cls{\n Value: vercel.Float64(4),\n PreviousValue: vercel.Float64(2),\n Source: operations.UpdateCheckChecksRequestSourceWebVitals,\n },\n Tbt: operations.Tbt{\n Value: vercel.Float64(3000),\n PreviousValue: vercel.Float64(3500),\n Source: operations.UpdateCheckChecksRequestRequestBodySourceWebVitals,\n },\n VirtualExperienceScore: &operations.VirtualExperienceScore{\n Value: vercel.Int64(30),\n PreviousValue: vercel.Int64(35),\n Source: operations.UpdateCheckChecksRequestRequestBodyOutputSourceWebVitals,\n },\n },\n },\n ExternalID: vercel.String(\"1234abc\"),\n },\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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" ], "deprecated": true, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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" } }, { "name": "autoUpdate", "description": "Mark the check as running", "in": "query", "required": false, "schema": { "description": "Mark the check as running", "type": "boolean" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "go", "label": "rerequestCheck", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Checks.RerequestCheck(ctx, \"dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6\", \"check_2qn7PZrx89yxY34vEZPD31Y9XVj6\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/connect/networks": { "get": { "description": "Allows to list Secure Compute networks.", "operationId": "listNetworks", "security": [ { "bearerToken": [] } ], "summary": "List Secure Compute networks", "tags": [ "connect" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/Network" }, "type": "array" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "includeHostedZones", "description": "Whether to include Hosted Zones in the response", "in": "query", "schema": { "type": "boolean", "description": "Whether to include Hosted Zones in the response", "default": true } }, { "name": "includePeeringConnections", "description": "Whether to include VPC Peering connections in the response", "in": "query", "schema": { "type": "boolean", "description": "Whether to include VPC Peering connections in the response", "default": true } }, { "name": "includeProjects", "description": "Whether to include projects in the response", "in": "query", "schema": { "type": "boolean", "description": "Whether to include projects in the response", "default": true } }, { "name": "search", "description": "The query to use as a filter for returned networks", "in": "query", "schema": { "type": "string", "description": "The query to use as a filter for returned networks", "maxLength": 255 } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listNetworks", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.listNetworks({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Allows to create a Secure Compute network.", "operationId": "createNetwork", "security": [ { "bearerToken": [] } ], "summary": "Create a Secure Compute network", "tags": [ "connect" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Network" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "409": { "description": "" } }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "awsAvailabilityZoneIds": { "type": "array", "items": { "type": "string", "description": "An AWS Availability Zone ID to use for the network", "example": "use1-az1" }, "minItems": 2, "maxItems": 2 }, "cidr": { "type": "string", "description": "The CIDR block of the network", "example": "192.168.0.0/16" }, "name": { "type": "string", "description": "The name of the network", "maxLength": 255 }, "region": { "type": "string", "description": "The region where the network will be created", "example": "iad1" } }, "required": [ "cidr", "name", "region" ] } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createNetwork", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.createNetwork({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n awsAvailabilityZoneIds: [\n \"use1-az1\",\n ],\n cidr: \"192.168.0.0/16\",\n name: \"\",\n region: \"iad1\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/connect/networks/{networkId}": { "delete": { "description": "Allows to delete a Secure Compute network.", "operationId": "deleteNetwork", "security": [ { "bearerToken": [] } ], "summary": "Delete a Secure Compute network", "tags": [ "connect" ], "responses": { "204": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "409": { "description": "" } }, "parameters": [ { "name": "networkId", "description": "The ID of the network to delete", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the network to delete", "example": "uzrmorq7bn05z-fz" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteNetwork", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.connect.deleteNetwork({\n networkId: \"uzrmorq7bn05z-fz\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] }, "patch": { "description": "Allows to update a Secure Compute network.", "operationId": "updateNetwork", "security": [ { "bearerToken": [] } ], "summary": "Update a Secure Compute network", "tags": [ "connect" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Network" } } } }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "networkId", "description": "The unique identifier of the Secure Compute network", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the Secure Compute network", "example": "uzrmorq7bn05z-fz" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "The name of the Secure Compute network", "maxLength": 255 } }, "required": [ "name" ] } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateNetwork", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.updateNetwork({\n networkId: \"uzrmorq7bn05z-fz\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "description": "Allows to read a Secure Compute network.", "operationId": "readNetwork", "security": [ { "bearerToken": [] } ], "summary": "Read a Secure Compute network", "tags": [ "connect" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Network" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "networkId", "description": "The unique identifier of the Secure Compute network", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the Secure Compute network", "example": "uzrmorq7bn05z-fz" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "readNetwork", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.readNetwork({\n networkId: \"uzrmorq7bn05z-fz\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "delimiter", "command", "stdout", "stderr", "exit", "deployment-state", "middleware", "middleware-invocation", "edge-function-invocation", "metric", "report", "fatal" ] }, "created": { "type": "number" }, "payload": { "properties": { "deploymentId": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "text": { "type": "string" }, "id": { "type": "string" }, "date": { "type": "number" }, "serial": { "type": "string" }, "created": { "type": "number" }, "statusCode": { "type": "number" }, "requestId": { "type": "string" }, "proxy": { "properties": { "timestamp": { "type": "number" }, "method": { "type": "string" }, "host": { "type": "string" }, "path": { "type": "string" }, "statusCode": { "type": "number" }, "userAgent": { "items": { "type": "string" }, "type": "array" }, "referer": { "type": "string" }, "clientIp": { "type": "string" }, "region": { "type": "string" }, "scheme": { "type": "string" }, "responseByteSize": { "type": "number" }, "cacheId": { "type": "string" }, "pathType": { "type": "string" }, "pathTypeVariant": { "type": "string" }, "vercelId": { "type": "string" }, "vercelCache": { "type": "string", "enum": [ "MISS", "HIT", "STALE", "BYPASS", "PRERENDER", "REVALIDATED" ] }, "lambdaRegion": { "type": "string" }, "wafAction": { "type": "string", "enum": [ "log", "challenge", "deny", "bypass", "rate_limit" ] }, "wafRuleId": { "type": "string" } }, "required": [ "host", "method", "path", "referer", "region", "timestamp", "userAgent" ], "type": "object" } }, "required": [ "date", "deploymentId", "id", "serial" ], "type": "object" } }, "required": [ "created", "payload", "type" ], "type": "object" }, { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "serial": { "type": "string" }, "text": { "type": "string" }, "type": { "type": "string", "enum": [ "delimiter", "command", "stdout", "stderr", "exit", "deployment-state", "middleware", "middleware-invocation", "edge-function-invocation", "metric", "report", "fatal" ] }, "level": { "type": "string", "enum": [ "error", "warning" ] } }, "required": [ "created", "date", "deploymentId", "id", "info", "serial", "type" ], "type": "object" } ], "nullable": true }, "nullable": true } }, "application/stream+json": { "schema": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "delimiter", "command", "stdout", "stderr", "exit", "deployment-state", "middleware", "middleware-invocation", "edge-function-invocation", "metric", "report", "fatal" ] }, "created": { "type": "number" }, "payload": { "properties": { "deploymentId": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "text": { "type": "string" }, "id": { "type": "string" }, "date": { "type": "number" }, "serial": { "type": "string" }, "created": { "type": "number" }, "statusCode": { "type": "number" }, "requestId": { "type": "string" }, "proxy": { "properties": { "timestamp": { "type": "number" }, "method": { "type": "string" }, "host": { "type": "string" }, "path": { "type": "string" }, "statusCode": { "type": "number" }, "userAgent": { "items": { "type": "string" }, "type": "array" }, "referer": { "type": "string" }, "clientIp": { "type": "string" }, "region": { "type": "string" }, "scheme": { "type": "string" }, "responseByteSize": { "type": "number" }, "cacheId": { "type": "string" }, "pathType": { "type": "string" }, "pathTypeVariant": { "type": "string" }, "vercelId": { "type": "string" }, "vercelCache": { "type": "string", "enum": [ "MISS", "HIT", "STALE", "BYPASS", "PRERENDER", "REVALIDATED" ] }, "lambdaRegion": { "type": "string" }, "wafAction": { "type": "string", "enum": [ "log", "challenge", "deny", "bypass", "rate_limit" ] }, "wafRuleId": { "type": "string" } }, "required": [ "host", "method", "path", "referer", "region", "timestamp", "userAgent" ], "type": "object" } }, "required": [ "date", "deploymentId", "id", "serial" ], "type": "object" } }, "required": [ "created", "payload", "type" ], "type": "object" }, { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "serial": { "type": "string" }, "text": { "type": "string" }, "type": { "type": "string", "enum": [ "delimiter", "command", "stdout", "stderr", "exit", "deployment-state", "middleware", "middleware-invocation", "edge-function-invocation", "metric", "report", "fatal" ] }, "level": { "type": "string", "enum": [ "error", "warning" ] } }, "required": [ "created", "date", "deploymentId", "id", "info", "serial", "type" ], "type": "object" } ], "nullable": true } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getDeploymentEvents", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.deployments.getDeploymentEvents({\n idOrUrl: \"dpl_5WJWYSyB7BpgTj3EuwF37WMRBXBtPQ2iTMJHJBJyRfd\",\n direction: \"backward\",\n follow: 1,\n limit: 100,\n name: \"bld_cotnkcr76\",\n since: 1540095775941,\n until: 1540106318643,\n statusCode: \"5xx\",\n delimiter: 1,\n builds: 1,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getDeploymentEvents", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Deployments.GetDeploymentEvents(ctx, operations.GetDeploymentEventsRequest{\n IDOrURL: \"dpl_5WJWYSyB7BpgTj3EuwF37WMRBXBtPQ2iTMJHJBJyRfd\",\n Direction: operations.DirectionBackward.ToPointer(),\n Follow: vercel.Float64(1),\n Limit: vercel.Float64(100),\n Name: vercel.String(\"bld_cotnkcr76\"),\n Since: vercel.Float64(1540095775941),\n Until: vercel.Float64(1540106318643),\n StatusCode: vercel.Pointer(operations.CreateStatusCodeStr(\n \"5xx\",\n )),\n Delimiter: vercel.Float64(1),\n Builds: vercel.Float64(1),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/v1/deployments/{deploymentId}/integrations/{integrationConfigurationId}/resources/{resourceId}/actions/{action}": { "patch": { "description": "Updates the deployment integration action for the specified integration installation", "operationId": "update-integration-deployment-action", "security": [ { "bearerToken": [] } ], "summary": "Update deployment integration action", "tags": [ "deployments", "integrations" ], "responses": { "202": { "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "deploymentId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "action", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "running", "succeeded", "failed" ] }, "statusText": { "type": "string" }, "statusUrl": { "type": "string", "format": "uri", "pattern": "^https?://|^sso:" }, "outcomes": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "kind": { "type": "string" }, "secrets": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" } }, "required": [ "name", "value" ], "additionalProperties": false } } }, "required": [ "kind", "secrets" ], "additionalProperties": false } ] } } }, "additionalProperties": false } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "update-integration-deployment-action", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.deployments.updateIntegrationDeploymentAction({\n deploymentId: \"\",\n integrationConfigurationId: \"\",\n resourceId: \"\",\n action: \"\",\n });\n\n\n}\n\nrun();" }, { "lang": "typescript", "label": "update-integration-deployment-action", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.integrations.updateIntegrationDeploymentAction({\n deploymentId: \"\",\n integrationConfigurationId: \"\",\n resourceId: \"\",\n action: \"\",\n });\n\n\n}\n\nrun();" } ] } }, "/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", "enum": [ false, true ] } ] }, "alwaysRefuseToBuild": { "type": "boolean", "enum": [ false, true ] }, "build": { "properties": { "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "env" ], "type": "object" }, "buildArtifactUrls": { "items": { "type": "string" }, "type": "array" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "additionalProperties": true, "type": "object" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "inspectorUrl": { "nullable": true, "type": "string" }, "isInConcurrentBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "isInSystemBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "projectSettings": { "properties": { "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x" ] }, "buildCommand": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "framework": { "nullable": true, "type": "string", "enum": [ "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "services", "mastra", null ] }, "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", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" } }, "type": "object" }, "integrations": { "properties": { "status": { "type": "string", "enum": [ "skipped", "pending", "ready", "error", "timeout" ] }, "startedAt": { "type": "number" }, "claimedAt": { "type": "number" }, "completedAt": { "type": "number" }, "skippedAt": { "type": "number" }, "skippedBy": { "type": "string" } }, "required": [ "startedAt", "status" ], "type": "object" }, "images": { "properties": { "sizes": { "items": { "type": "number" }, "type": "array" }, "qualities": { "items": { "type": "number" }, "type": "array" }, "domains": { "items": { "type": "string" }, "type": "array" }, "remotePatterns": { "items": { "properties": { "protocol": { "type": "string", "enum": [ "http", "https" ], "description": "Must be `http` or `https`." }, "hostname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single subdomain. Double `**` matches any number of subdomains." }, "port": { "type": "string", "description": "Can be literal port such as `8080` or empty string meaning no port." }, "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "required": [ "hostname" ], "type": "object" }, "type": "array" }, "localPatterns": { "items": { "properties": { "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "type": "object" }, "type": "array" }, "minimumCacheTTL": { "type": "number" }, "formats": { "items": { "type": "string", "enum": [ "image/avif", "image/webp" ] }, "type": "array" }, "dangerouslyAllowSVG": { "type": "boolean", "enum": [ false, true ] }, "contentSecurityPolicy": { "type": "string" }, "contentDispositionType": { "type": "string", "enum": [ "inline", "attachment" ] } }, "type": "object" }, "alias": { "items": { "type": "string" }, "type": "array", "description": "A list of all the aliases (default aliases, staging aliases and production aliases) that were assigned upon deployment creation", "example": [] }, "aliasAssigned": { "type": "boolean", "enum": [ false, true ], "description": "A boolean that will be true when the aliases from the alias property were assigned successfully", "example": true }, "bootedAt": { "type": "number" }, "buildingAt": { "type": "number" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "creator": { "properties": { "uid": { "type": "string", "description": "The ID of the user that created the deployment", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" }, "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "initReadyAt": { "type": "number" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "entrypoint": { "nullable": true, "type": "string" }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "path": { "type": "string" }, "functionName": { "type": "string" } }, "required": [ "functionName", "path" ], "type": "object" }, "type": "array" } }, "required": [ "id", "output" ], "type": "object", "description": "A partial representation of a Build used by the deployment endpoint." }, "type": "array" }, "public": { "type": "boolean", "enum": [ false, true ], "description": "A boolean representing if the deployment is public or not. By default this is `false`", "example": false }, "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", "description": "The team that owns the deployment if any" }, "userAliases": { "items": { "type": "string" }, "type": "array", "description": "An array of domains that were provided by the user when creating the Deployment.", "example": [ "sub1.example.com", "sub2.example.com" ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "customEnvironment": { "oneOf": [ { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "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, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." }, { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." } ] }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "readyStateReason": { "type": "string" }, "aliasWarning": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "readyState": { "type": "string", "enum": [ "QUEUED", "BUILDING", "ERROR", "INITIALIZING", "READY", "CANCELED" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object", "description": "An object that will contain a `code` and a `message` when the aliasing fails, otherwise the value will be `null`", "example": null }, "aliasFinal": { "nullable": true, "type": "string" }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "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", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "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": [ "repoId", "type" ], "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": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "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": [ "projectId", "type" ], "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": [ "repoUuid", "type" ], "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": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "repoPushedAt": { "type": "number" }, "ref": { "nullable": true, "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "gitUrl": { "type": "string" } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "projectId": { "type": "number" } }, "required": [ "projectId", "ref", "sha", "type" ], "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": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "repoPushedAt": { "type": "number" } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" } ] }, "manualProvisioning": { "properties": { "state": { "type": "string", "enum": [ "PENDING", "COMPLETE", "TIMEOUT" ], "description": "Current provisioning state" }, "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" } }, "required": [ "state" ], "type": "object", "description": "Present when deployment was created with manual provisioning enabled, either explicitly or via the experimental BYOC git flow. The deployment stays in INITIALIZING until /continue is called." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "originCacheRegion": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x" ], "description": "If set it overrides the `projectSettings.nodeVersion` for this deployment." }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "readySubstate": { "type": "string", "enum": [ "STAGED", "ROLLING", "PROMOTED" ], "description": "Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - ROLLING: in the process of having production traffic gradually transitioned. - PROMOTED: has seen production traffic" }, "regions": { "items": { "type": "string" }, "type": "array", "description": "The regions the deployment exists in", "example": [ "sfo1" ] }, "softDeletedByRetention": { "type": "boolean", "enum": [ false, true ], "description": "flag to indicate if the deployment was deleted by retention policy", "example": "true" }, "source": { "type": "string", "enum": [ "api-trigger-git-deploy", "cli", "clone/repo", "git", "import", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from", "example": "cli" }, "target": { "nullable": true, "type": "string", "enum": [ "staging", "production", null ], "description": "If defined, either `staging` if a staging alias in the format `..now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the \"preview\" deployment.", "example": null }, "undeletedAt": { "type": "number", "description": "A number containing the date when the deployment was undeleted at milliseconds", "example": 1540257589405 }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" }, "userConfiguredDeploymentId": { "type": "string", "description": "Since January 2025 User-configured deployment ID for skew protection with pre-built deployments. This is set when users configure a custom deploymentId in their next.config.js file. This allows Next.js to use skew protection even when deployments are pre-built outside of Vercel's build system.", "example": "abc123" }, "version": { "type": "number", "enum": [ 2 ], "description": "The platform version that was used to create the deployment.", "example": 2 }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "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" }, "custom_environment_id": { "type": "string" }, "plan": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "projectId": { "type": "string" }, "plan": { "type": "string", "enum": [ "pro", "enterprise", "hobby" ] }, "platform": { "properties": { "source": { "properties": { "name": { "type": "string", "description": "Display name of the platform." } }, "required": [ "name" ], "type": "object", "description": "The external platform that created the deployment (e.g. its display name)." }, "origin": { "properties": { "type": { "type": "string", "enum": [ "id", "url" ], "description": "Whether the value is an opaque identifier or a URL." }, "value": { "type": "string", "description": "The identifier or URL pointing to the originating entity." } }, "required": [ "type", "value" ], "type": "object", "description": "Reference back to the entity on the platform that initiated the deployment." }, "creator": { "properties": { "name": { "type": "string", "description": "Display name of the platform user." }, "avatar": { "type": "string", "description": "URL of the platform user's avatar image." } }, "required": [ "name" ], "type": "object", "description": "The user on the external platform who triggered the deployment." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Arbitrary key-value metadata provided by the platform." } }, "required": [ "creator", "origin", "source" ], "type": "object", "description": "Metadata about the source platform that triggered the deployment. Allows us to map a deployment back to a platform (e.g. the chat that created it)" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "type": "string" }, "createdIn": { "type": "string" }, "crons": { "items": { "properties": { "schedule": { "type": "string" }, "path": { "type": "string" } }, "required": [ "path", "schedule" ], "type": "object" }, "type": "array" }, "functions": { "nullable": true, "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "x86_64", "arm64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "passiveConnectConfigurationId": { "type": "string", "description": "Since November 2023 this field defines a Secure Compute network 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", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "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": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, these are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object." }, "destination": { "type": "string" }, "statusCode": { "type": "number" }, "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" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "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", "enum": [ false, true ] }, "middleware": { "type": "number", "enum": [ 0 ] } }, "required": [ "continue", "middleware", "src" ], "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", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "namespace", "ownerType", "path", "private", "projectId", "type", "url" ], "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", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "repoId", "repoOwnerId", "type" ], "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", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repoUuid", "slug", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "type" ], "type": "object" } ] }, "flags": { "oneOf": [ { "properties": { "definitions": { "additionalProperties": { "properties": { "options": { "items": { "properties": { "value": { "$ref": "#/components/schemas/FlagJSONValue" }, "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." } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "mfeConfigUploadState": { "type": "string", "enum": [ "success", "waiting_on_build", "no_config" ], "description": "The result of the microfrontends config upload during deployment creation / build. Only set for default app deployments. The config upload is attempted during deployment create, and then again during the build. If the config is not in the root directory, or the deployment is prebuilt, the config cannot be uploaded during deployment create. The upload during deployment build finds the config even if it's not in the root directory, as it has access to all files. Uploading the config during create is ideal, as then all child deployments are guaranteed to have access to the default app deployment config even if the default app has not yet started building. If the config is not uploaded, the child app will show as building until the config has been uploaded during the default app build. - `success` - The config was uploaded successfully, either when the deployment was created or during the build. - `waiting_on_build` - The config could not be uploaded during deployment create, will be attempted again during the build. - `no_config` - No config was found. Only set once the build has not found the config in any of the deployment's files. - `undefined` - Legacy deployments, or there was an error uploading the config during deployment create." }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds", "isDefaultApp" ], "type": "object" } ] }, "config": { "properties": { "version": { "type": "number" }, "functionType": { "type": "string", "enum": [ "standard", "fluid" ] }, "functionMemoryType": { "type": "string", "enum": [ "standard", "standard_legacy", "performance" ] }, "functionTimeout": { "nullable": true, "type": "number" }, "secureComputePrimaryRegion": { "nullable": true, "type": "string" }, "secureComputeFallbackRegion": { "nullable": true, "type": "string" }, "isUsingActiveCPU": { "type": "boolean", "enum": [ false, true ] }, "resourceConfig": { "properties": { "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ], "description": "Build resource configuration snapshot for this deployment." } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." }, "elasticConcurrency": { "type": "string", "enum": [ "TEAM_SETTING", "PROJECT_SETTING", "SKIP_QUEUE" ], "description": "When elastic concurrency is used for this deployment, a value is set. The value tells the reason where the setting was coming from. - TEAM_SETTING: Inherited from team settings - PROJECT_SETTING: Inherited from project settings - SKIP_QUEUE: Manually triggered by user to skip the queues" }, "buildMachine": { "properties": { "purchaseType": { "nullable": true, "type": "string", "enum": [ "enhanced", "turbo", "standard", null ], "description": "Machine type that was used for the build." } }, "type": "object" } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." } }, "required": [ "functionMemoryType", "functionTimeout", "functionType", "secureComputeFallbackRegion", "secureComputePrimaryRegion" ], "type": "object", "description": "Since February 2025 the configuration must include snapshot data at the time of deployment creation to capture properties for the /deployments/:id/config endpoint utilized for displaying Deployment Configuration on the frontend This is optional because older deployments may not have this data captured" }, "checks": { "properties": { "deployment-alias": { "properties": { "state": { "type": "string", "enum": [ "succeeded", "failed", "pending" ] }, "startedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "startedAt", "state" ], "type": "object", "description": "Condensed check data. Retrieve individual check and check run data using api-checks v2 routes." } }, "required": [ "deployment-alias" ], "type": "object" }, "seatBlock": { "properties": { "blockCode": { "type": "string", "enum": [ "TEAM_ACCESS_REQUIRED", "COMMIT_AUTHOR_REQUIRED" ], "description": "The NSNB decision code for the seat block. TODO: We should consolidate block types." }, "userId": { "type": "string", "description": "The blocked vercel user ID." }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Determines if the user was verified during the block. In the git integration case, the commit sender was the author." }, "gitUserId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gitProvider": { "type": "string", "enum": [ "gitlab", "bitbucket", "github" ], "description": "The git provider type associated with gitUserId." } }, "required": [ "blockCode" ], "type": "object", "description": "NSNB Blocked metadata" }, "attribution": { "properties": { "commitMeta": { "properties": { "email": { "type": "string", "description": "Email from git commit author" }, "name": { "type": "string", "description": "Name from git commit author" }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Whether the commit was signed/verified (GitHub only, others return undefined)" } }, "type": "object", "description": "Commit metadata from the git commit author" }, "gitUser": { "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "login": { "type": "string", "description": "Git provider username/login" }, "type": { "type": "string", "description": "User type" }, "provider": { "type": "string", "description": "The git provider (github, gitlab, bitbucket)" } }, "required": [ "id", "login" ], "type": "object", "description": "Git provider user associated with the commit author email (only set if resolved)" }, "vercelUser": { "properties": { "id": { "type": "string", "description": "Vercel user ID" }, "username": { "type": "string", "description": "Vercel username" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Team roles at time of deployment" } }, "required": [ "id", "username" ], "type": "object", "description": "Vercel user linked to the git provider account (only set if resolved)" } }, "type": "object", "description": "Attribution metadata for the deployment, linking commit author to git and Vercel users. Only populated when the `enable-deployment-attribution` flag is enabled." } }, "required": [ "aliasAssigned", "bootedAt", "build", "buildSkipped", "buildingAt", "createdAt", "createdIn", "creator", "env", "id", "inspectorUrl", "isInConcurrentBuildsQueue", "isInSystemBuildsQueue", "meta", "name", "ownerId", "plan", "projectId", "projectSettings", "public", "readyState", "regions", "routes", "status", "type", "url", "version" ], "type": "object", "description": "The deployment including both public and private information" }, { "properties": { "alias": { "items": { "type": "string" }, "type": "array", "description": "A list of all the aliases (default aliases, staging aliases and production aliases) that were assigned upon deployment creation", "example": [] }, "aliasAssigned": { "type": "boolean", "enum": [ false, true ], "description": "A boolean that will be true when the aliases from the alias property were assigned successfully", "example": true }, "bootedAt": { "type": "number" }, "buildingAt": { "type": "number" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "creator": { "properties": { "uid": { "type": "string", "description": "The ID of the user that created the deployment", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" }, "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "initReadyAt": { "type": "number" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "entrypoint": { "nullable": true, "type": "string" }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "path": { "type": "string" }, "functionName": { "type": "string" } }, "required": [ "functionName", "path" ], "type": "object" }, "type": "array" } }, "required": [ "id", "output" ], "type": "object", "description": "A partial representation of a Build used by the deployment endpoint." }, "type": "array" }, "public": { "type": "boolean", "enum": [ false, true ], "description": "A boolean representing if the deployment is public or not. By default this is `false`", "example": false }, "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", "description": "The team that owns the deployment if any" }, "userAliases": { "items": { "type": "string" }, "type": "array", "description": "An array of domains that were provided by the user when creating the Deployment.", "example": [ "sub1.example.com", "sub2.example.com" ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "customEnvironment": { "oneOf": [ { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "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, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." }, { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." } ] }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "readyStateReason": { "type": "string" }, "aliasWarning": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "readyState": { "type": "string", "enum": [ "QUEUED", "BUILDING", "ERROR", "INITIALIZING", "READY", "CANCELED" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object", "description": "An object that will contain a `code` and a `message` when the aliasing fails, otherwise the value will be `null`", "example": null }, "aliasFinal": { "nullable": true, "type": "string" }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "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", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "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": [ "repoId", "type" ], "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": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "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": [ "projectId", "type" ], "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": [ "repoUuid", "type" ], "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": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "repoPushedAt": { "type": "number" }, "ref": { "nullable": true, "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "gitUrl": { "type": "string" } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "projectId": { "type": "number" } }, "required": [ "projectId", "ref", "sha", "type" ], "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": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "repoPushedAt": { "type": "number" } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" } ] }, "manualProvisioning": { "properties": { "state": { "type": "string", "enum": [ "PENDING", "COMPLETE", "TIMEOUT" ], "description": "Current provisioning state" }, "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" } }, "required": [ "state" ], "type": "object", "description": "Present when deployment was created with manual provisioning enabled, either explicitly or via the experimental BYOC git flow. The deployment stays in INITIALIZING until /continue is called." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "originCacheRegion": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x" ], "description": "If set it overrides the `projectSettings.nodeVersion` for this deployment." }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "readySubstate": { "type": "string", "enum": [ "STAGED", "ROLLING", "PROMOTED" ], "description": "Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - ROLLING: in the process of having production traffic gradually transitioned. - PROMOTED: has seen production traffic" }, "regions": { "items": { "type": "string" }, "type": "array", "description": "The regions the deployment exists in", "example": [ "sfo1" ] }, "softDeletedByRetention": { "type": "boolean", "enum": [ false, true ], "description": "flag to indicate if the deployment was deleted by retention policy", "example": "true" }, "source": { "type": "string", "enum": [ "api-trigger-git-deploy", "cli", "clone/repo", "git", "import", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from", "example": "cli" }, "target": { "nullable": true, "type": "string", "enum": [ "staging", "production", null ], "description": "If defined, either `staging` if a staging alias in the format `..now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the \"preview\" deployment.", "example": null }, "undeletedAt": { "type": "number", "description": "A number containing the date when the deployment was undeleted at milliseconds", "example": 1540257589405 }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" }, "userConfiguredDeploymentId": { "type": "string", "description": "Since January 2025 User-configured deployment ID for skew protection with pre-built deployments. This is set when users configure a custom deploymentId in their next.config.js file. This allows Next.js to use skew protection even when deployments are pre-built outside of Vercel's build system.", "example": "abc123" }, "version": { "type": "number", "enum": [ 2 ], "description": "The platform version that was used to create the deployment.", "example": 2 }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "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" }, "custom_environment_id": { "type": "string" }, "plan": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" } }, "required": [ "aliasAssigned", "bootedAt", "buildSkipped", "buildingAt", "createdAt", "creator", "id", "meta", "name", "public", "readyState", "regions", "status", "type", "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" }, "429": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "inspect", "get" ] }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getDeployment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.deployments.getDeployment({\n idOrUrl: \"dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ\",\n withGitRepoInfo: \"true\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getDeployment", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Deployments.GetDeployment(ctx, \"dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ\", vercel.String(\"true\"), nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] } }, "/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", "enum": [ false, true ] } ] }, "alwaysRefuseToBuild": { "type": "boolean", "enum": [ false, true ] }, "build": { "properties": { "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "env" ], "type": "object" }, "buildArtifactUrls": { "items": { "type": "string" }, "type": "array" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "additionalProperties": true, "type": "object" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "inspectorUrl": { "nullable": true, "type": "string" }, "isInConcurrentBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "isInSystemBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "projectSettings": { "properties": { "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x" ] }, "buildCommand": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "framework": { "nullable": true, "type": "string", "enum": [ "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "services", "mastra", null ] }, "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", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" } }, "type": "object" }, "integrations": { "properties": { "status": { "type": "string", "enum": [ "skipped", "pending", "ready", "error", "timeout" ] }, "startedAt": { "type": "number" }, "claimedAt": { "type": "number" }, "completedAt": { "type": "number" }, "skippedAt": { "type": "number" }, "skippedBy": { "type": "string" } }, "required": [ "startedAt", "status" ], "type": "object" }, "images": { "properties": { "sizes": { "items": { "type": "number" }, "type": "array" }, "qualities": { "items": { "type": "number" }, "type": "array" }, "domains": { "items": { "type": "string" }, "type": "array" }, "remotePatterns": { "items": { "properties": { "protocol": { "type": "string", "enum": [ "http", "https" ], "description": "Must be `http` or `https`." }, "hostname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single subdomain. Double `**` matches any number of subdomains." }, "port": { "type": "string", "description": "Can be literal port such as `8080` or empty string meaning no port." }, "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "required": [ "hostname" ], "type": "object" }, "type": "array" }, "localPatterns": { "items": { "properties": { "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "type": "object" }, "type": "array" }, "minimumCacheTTL": { "type": "number" }, "formats": { "items": { "type": "string", "enum": [ "image/avif", "image/webp" ] }, "type": "array" }, "dangerouslyAllowSVG": { "type": "boolean", "enum": [ false, true ] }, "contentSecurityPolicy": { "type": "string" }, "contentDispositionType": { "type": "string", "enum": [ "inline", "attachment" ] } }, "type": "object" }, "alias": { "items": { "type": "string" }, "type": "array", "description": "A list of all the aliases (default aliases, staging aliases and production aliases) that were assigned upon deployment creation", "example": [] }, "aliasAssigned": { "type": "boolean", "enum": [ false, true ], "description": "A boolean that will be true when the aliases from the alias property were assigned successfully", "example": true }, "bootedAt": { "type": "number" }, "buildingAt": { "type": "number" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "creator": { "properties": { "uid": { "type": "string", "description": "The ID of the user that created the deployment", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" }, "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "initReadyAt": { "type": "number" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "entrypoint": { "nullable": true, "type": "string" }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "path": { "type": "string" }, "functionName": { "type": "string" } }, "required": [ "functionName", "path" ], "type": "object" }, "type": "array" } }, "required": [ "id", "output" ], "type": "object", "description": "A partial representation of a Build used by the deployment endpoint." }, "type": "array" }, "public": { "type": "boolean", "enum": [ false, true ], "description": "A boolean representing if the deployment is public or not. By default this is `false`", "example": false }, "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", "description": "The team that owns the deployment if any" }, "userAliases": { "items": { "type": "string" }, "type": "array", "description": "An array of domains that were provided by the user when creating the Deployment.", "example": [ "sub1.example.com", "sub2.example.com" ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "customEnvironment": { "oneOf": [ { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "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, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." }, { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." } ] }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "readyStateReason": { "type": "string" }, "aliasWarning": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "readyState": { "type": "string", "enum": [ "QUEUED", "BUILDING", "ERROR", "INITIALIZING", "READY", "CANCELED" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object", "description": "An object that will contain a `code` and a `message` when the aliasing fails, otherwise the value will be `null`", "example": null }, "aliasFinal": { "nullable": true, "type": "string" }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "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", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "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": [ "repoId", "type" ], "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": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "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": [ "projectId", "type" ], "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": [ "repoUuid", "type" ], "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": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "repoPushedAt": { "type": "number" }, "ref": { "nullable": true, "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "gitUrl": { "type": "string" } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "projectId": { "type": "number" } }, "required": [ "projectId", "ref", "sha", "type" ], "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": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "repoPushedAt": { "type": "number" } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" } ] }, "manualProvisioning": { "properties": { "state": { "type": "string", "enum": [ "PENDING", "COMPLETE", "TIMEOUT" ], "description": "Current provisioning state" }, "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" } }, "required": [ "state" ], "type": "object", "description": "Present when deployment was created with manual provisioning enabled, either explicitly or via the experimental BYOC git flow. The deployment stays in INITIALIZING until /continue is called." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "originCacheRegion": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x" ], "description": "If set it overrides the `projectSettings.nodeVersion` for this deployment." }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "readySubstate": { "type": "string", "enum": [ "STAGED", "ROLLING", "PROMOTED" ], "description": "Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - ROLLING: in the process of having production traffic gradually transitioned. - PROMOTED: has seen production traffic" }, "regions": { "items": { "type": "string" }, "type": "array", "description": "The regions the deployment exists in", "example": [ "sfo1" ] }, "softDeletedByRetention": { "type": "boolean", "enum": [ false, true ], "description": "flag to indicate if the deployment was deleted by retention policy", "example": "true" }, "source": { "type": "string", "enum": [ "api-trigger-git-deploy", "cli", "clone/repo", "git", "import", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from", "example": "cli" }, "target": { "nullable": true, "type": "string", "enum": [ "staging", "production", null ], "description": "If defined, either `staging` if a staging alias in the format `..now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the \"preview\" deployment.", "example": null }, "undeletedAt": { "type": "number", "description": "A number containing the date when the deployment was undeleted at milliseconds", "example": 1540257589405 }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" }, "userConfiguredDeploymentId": { "type": "string", "description": "Since January 2025 User-configured deployment ID for skew protection with pre-built deployments. This is set when users configure a custom deploymentId in their next.config.js file. This allows Next.js to use skew protection even when deployments are pre-built outside of Vercel's build system.", "example": "abc123" }, "version": { "type": "number", "enum": [ 2 ], "description": "The platform version that was used to create the deployment.", "example": 2 }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "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" }, "custom_environment_id": { "type": "string" }, "plan": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "projectId": { "type": "string" }, "plan": { "type": "string", "enum": [ "pro", "enterprise", "hobby" ] }, "platform": { "properties": { "source": { "properties": { "name": { "type": "string", "description": "Display name of the platform." } }, "required": [ "name" ], "type": "object", "description": "The external platform that created the deployment (e.g. its display name)." }, "origin": { "properties": { "type": { "type": "string", "enum": [ "id", "url" ], "description": "Whether the value is an opaque identifier or a URL." }, "value": { "type": "string", "description": "The identifier or URL pointing to the originating entity." } }, "required": [ "type", "value" ], "type": "object", "description": "Reference back to the entity on the platform that initiated the deployment." }, "creator": { "properties": { "name": { "type": "string", "description": "Display name of the platform user." }, "avatar": { "type": "string", "description": "URL of the platform user's avatar image." } }, "required": [ "name" ], "type": "object", "description": "The user on the external platform who triggered the deployment." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Arbitrary key-value metadata provided by the platform." } }, "required": [ "creator", "origin", "source" ], "type": "object", "description": "Metadata about the source platform that triggered the deployment. Allows us to map a deployment back to a platform (e.g. the chat that created it)" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "type": "string" }, "createdIn": { "type": "string" }, "crons": { "items": { "properties": { "schedule": { "type": "string" }, "path": { "type": "string" } }, "required": [ "path", "schedule" ], "type": "object" }, "type": "array" }, "functions": { "nullable": true, "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "x86_64", "arm64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "passiveConnectConfigurationId": { "type": "string", "description": "Since November 2023 this field defines a Secure Compute network 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", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "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": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, these are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object." }, "destination": { "type": "string" }, "statusCode": { "type": "number" }, "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" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "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", "enum": [ false, true ] }, "middleware": { "type": "number", "enum": [ 0 ] } }, "required": [ "continue", "middleware", "src" ], "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", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "namespace", "ownerType", "path", "private", "projectId", "type", "url" ], "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", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "repoId", "repoOwnerId", "type" ], "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", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repoUuid", "slug", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "type" ], "type": "object" } ] }, "flags": { "oneOf": [ { "properties": { "definitions": { "additionalProperties": { "properties": { "options": { "items": { "properties": { "value": { "$ref": "#/components/schemas/FlagJSONValue" }, "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." } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "mfeConfigUploadState": { "type": "string", "enum": [ "success", "waiting_on_build", "no_config" ], "description": "The result of the microfrontends config upload during deployment creation / build. Only set for default app deployments. The config upload is attempted during deployment create, and then again during the build. If the config is not in the root directory, or the deployment is prebuilt, the config cannot be uploaded during deployment create. The upload during deployment build finds the config even if it's not in the root directory, as it has access to all files. Uploading the config during create is ideal, as then all child deployments are guaranteed to have access to the default app deployment config even if the default app has not yet started building. If the config is not uploaded, the child app will show as building until the config has been uploaded during the default app build. - `success` - The config was uploaded successfully, either when the deployment was created or during the build. - `waiting_on_build` - The config could not be uploaded during deployment create, will be attempted again during the build. - `no_config` - No config was found. Only set once the build has not found the config in any of the deployment's files. - `undefined` - Legacy deployments, or there was an error uploading the config during deployment create." }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds", "isDefaultApp" ], "type": "object" } ] }, "config": { "properties": { "version": { "type": "number" }, "functionType": { "type": "string", "enum": [ "standard", "fluid" ] }, "functionMemoryType": { "type": "string", "enum": [ "standard", "standard_legacy", "performance" ] }, "functionTimeout": { "nullable": true, "type": "number" }, "secureComputePrimaryRegion": { "nullable": true, "type": "string" }, "secureComputeFallbackRegion": { "nullable": true, "type": "string" }, "isUsingActiveCPU": { "type": "boolean", "enum": [ false, true ] }, "resourceConfig": { "properties": { "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ], "description": "Build resource configuration snapshot for this deployment." } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." }, "elasticConcurrency": { "type": "string", "enum": [ "TEAM_SETTING", "PROJECT_SETTING", "SKIP_QUEUE" ], "description": "When elastic concurrency is used for this deployment, a value is set. The value tells the reason where the setting was coming from. - TEAM_SETTING: Inherited from team settings - PROJECT_SETTING: Inherited from project settings - SKIP_QUEUE: Manually triggered by user to skip the queues" }, "buildMachine": { "properties": { "purchaseType": { "nullable": true, "type": "string", "enum": [ "enhanced", "turbo", "standard", null ], "description": "Machine type that was used for the build." } }, "type": "object" } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." } }, "required": [ "functionMemoryType", "functionTimeout", "functionType", "secureComputeFallbackRegion", "secureComputePrimaryRegion" ], "type": "object", "description": "Since February 2025 the configuration must include snapshot data at the time of deployment creation to capture properties for the /deployments/:id/config endpoint utilized for displaying Deployment Configuration on the frontend This is optional because older deployments may not have this data captured" }, "checks": { "properties": { "deployment-alias": { "properties": { "state": { "type": "string", "enum": [ "succeeded", "failed", "pending" ] }, "startedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "startedAt", "state" ], "type": "object", "description": "Condensed check data. Retrieve individual check and check run data using api-checks v2 routes." } }, "required": [ "deployment-alias" ], "type": "object" }, "seatBlock": { "properties": { "blockCode": { "type": "string", "enum": [ "TEAM_ACCESS_REQUIRED", "COMMIT_AUTHOR_REQUIRED" ], "description": "The NSNB decision code for the seat block. TODO: We should consolidate block types." }, "userId": { "type": "string", "description": "The blocked vercel user ID." }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Determines if the user was verified during the block. In the git integration case, the commit sender was the author." }, "gitUserId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gitProvider": { "type": "string", "enum": [ "gitlab", "bitbucket", "github" ], "description": "The git provider type associated with gitUserId." } }, "required": [ "blockCode" ], "type": "object", "description": "NSNB Blocked metadata" }, "attribution": { "properties": { "commitMeta": { "properties": { "email": { "type": "string", "description": "Email from git commit author" }, "name": { "type": "string", "description": "Name from git commit author" }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Whether the commit was signed/verified (GitHub only, others return undefined)" } }, "type": "object", "description": "Commit metadata from the git commit author" }, "gitUser": { "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "login": { "type": "string", "description": "Git provider username/login" }, "type": { "type": "string", "description": "User type" }, "provider": { "type": "string", "description": "The git provider (github, gitlab, bitbucket)" } }, "required": [ "id", "login" ], "type": "object", "description": "Git provider user associated with the commit author email (only set if resolved)" }, "vercelUser": { "properties": { "id": { "type": "string", "description": "Vercel user ID" }, "username": { "type": "string", "description": "Vercel username" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Team roles at time of deployment" } }, "required": [ "id", "username" ], "type": "object", "description": "Vercel user linked to the git provider account (only set if resolved)" } }, "type": "object", "description": "Attribution metadata for the deployment, linking commit author to git and Vercel users. Only populated when the `enable-deployment-attribution` flag is enabled." } }, "required": [ "aliasAssigned", "bootedAt", "build", "buildSkipped", "buildingAt", "createdAt", "createdIn", "creator", "env", "id", "inspectorUrl", "isInConcurrentBuildsQueue", "isInSystemBuildsQueue", "meta", "name", "ownerId", "plan", "projectId", "projectSettings", "public", "readyState", "regions", "routes", "status", "type", "url", "version" ], "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": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated\nPro customers are allowed to deploy Serverless Functions to up to `proMaxRegions` regions, or if the project was created before the limit was introduced.\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" }, "426": { "description": "" }, "429": { "description": "" }, "500": { "description": "" }, "503": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": false, "properties": { "customEnvironmentSlugOrId": { "description": "Deploy to a custom environment, which will override the default environment", "type": "string" }, "deploymentId": { "description": "An deployment id for an existing deployment to redeploy", "type": "string", "example": "dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6" }, "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" }, "commitAuthorEmail": { "type": "string", "description": "The email of the author of the commit", "example": "kyliau@example.com" }, "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 }, "ci": { "type": "boolean", "description": "True if process.env.CI was set when deploying", "example": true }, "ciType": { "type": "string", "description": "The type of CI system used", "example": "github-actions" }, "ciGitProviderUsername": { "type": "string", "description": "The username used for the Git Provider (e.g. GitHub) if their CI (e.g. GitHub Actions) was used, if available", "example": "rauchg" }, "ciGitRepoVisibility": { "type": "string", "description": "The visibility of the Git repository if their CI (e.g. GitHub Actions) was used, if available", "example": "private" } } }, "gitSource": { "description": "Defines the Git Repository source to be deployed. This property can not be used in combination with `files`.", "anyOf": [ { "properties": { "type": { "enum": [ "vercel" ], "type": "string" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" } }, "required": [ "type", "sha" ], "type": "object" }, { "properties": { "ref": { "type": "string", "example": "main" }, "repoId": { "oneOf": [ { "type": "number" }, { "type": "string" } ], "example": 123456789 }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "github" ], "type": "string" } }, "required": [ "type", "ref", "repoId" ], "type": "object" }, { "properties": { "org": { "type": "string", "example": "vercel" }, "ref": { "type": "string", "example": "main" }, "repo": { "type": "string", "example": "next.js" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "github" ], "type": "string" } }, "required": [ "type", "ref", "org", "repo" ], "type": "object" }, { "properties": { "ref": { "type": "string", "example": "main" }, "repoId": { "oneOf": [ { "type": "number" }, { "type": "string" } ], "example": 123456789 }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "github-limited" ], "type": "string" } }, "required": [ "type", "ref", "repoId" ], "type": "object" }, { "properties": { "org": { "type": "string", "example": "vercel" }, "ref": { "type": "string", "example": "main" }, "repo": { "type": "string", "example": "next.js" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "github-limited" ], "type": "string" } }, "required": [ "type", "ref", "org", "repo" ], "type": "object" }, { "properties": { "projectId": { "oneOf": [ { "type": "number" }, { "type": "string" } ], "example": 987654321 }, "ref": { "type": "string", "example": "main" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "gitlab" ], "type": "string" } }, "required": [ "type", "ref", "projectId" ], "type": "object" }, { "properties": { "ref": { "type": "string", "example": "main" }, "repoUuid": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "bitbucket" ], "type": "string" }, "workspaceUuid": { "type": "string", "example": "987e6543-e21b-12d3-a456-426614174000" } }, "required": [ "type", "ref", "repoUuid" ], "type": "object" }, { "properties": { "owner": { "type": "string", "example": "bitbucket_user" }, "ref": { "type": "string", "example": "main" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "slug": { "type": "string", "example": "my-awesome-project" }, "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, "example": "next build" }, "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", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "services", "mastra" ], "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, "example": "pnpm install" }, "nodeVersion": { "description": "Override the Node.js version that should be used for this deployment", "enum": [ "24.x", "22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.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 }, "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`, `production`, or a custom environment identifier. 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`.", "type": "string", "example": "production" }, "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" } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "createDeployment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.deployments.createDeployment({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n deploymentId: \"dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6\",\n files: [\n {\n file: \"folder/file.js\",\n },\n ],\n gitMetadata: {\n remoteUrl: \"https://github.com/vercel/next.js\",\n commitAuthorName: \"kyliau\",\n commitAuthorEmail: \"kyliau@example.com\",\n commitMessage: \"add method to measure Interaction to Next Paint (INP) (#36490)\",\n commitRef: \"main\",\n commitSha: \"dc36199b2234c6586ebe05ec94078a895c707e29\",\n dirty: true,\n ci: true,\n ciType: \"github-actions\",\n ciGitProviderUsername: \"rauchg\",\n ciGitRepoVisibility: \"private\",\n },\n gitSource: {\n org: \"vercel\",\n ref: \"main\",\n repo: \"next.js\",\n sha: \"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0\",\n type: \"github\",\n },\n meta: {\n \"foo\": \"bar\",\n },\n name: \"my-instant-deployment\",\n project: \"my-deployment-project\",\n projectSettings: {\n buildCommand: \"next build\",\n installCommand: \"pnpm install\",\n },\n target: \"production\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "createDeployment", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Deployments.CreateDeployment(ctx, operations.CreateDeploymentRequest{\n RequestBody: &operations.CreateDeploymentRequestBody{\n Files: []operations.Files{\n operations.CreateFilesUploadedFile(\n operations.UploadedFile{\n File: \"folder/file.js\",\n },\n ),\n operations.CreateFilesUploadedFile(\n operations.UploadedFile{\n File: \"folder/file.js\",\n },\n ),\n },\n GitMetadata: &operations.GitMetadata{\n RemoteURL: vercel.String(\"https://github.com/vercel/next.js\"),\n CommitAuthorName: vercel.String(\"kyliau\"),\n CommitMessage: vercel.String(\"add method to measure Interaction to Next Paint (INP) (#36490)\"),\n CommitRef: vercel.String(\"main\"),\n CommitSha: vercel.String(\"dc36199b2234c6586ebe05ec94078a895c707e29\"),\n Dirty: vercel.Bool(true),\n },\n Meta: map[string]string{\n \"foo\": \"bar\",\n },\n Name: \"my-instant-deployment\",\n Project: vercel.String(\"my-deployment-project\"),\n },\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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", "enum": [ false, true ] } ] }, "alwaysRefuseToBuild": { "type": "boolean", "enum": [ false, true ] }, "build": { "properties": { "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "env" ], "type": "object" }, "buildArtifactUrls": { "items": { "type": "string" }, "type": "array" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "additionalProperties": true, "type": "object" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "inspectorUrl": { "nullable": true, "type": "string" }, "isInConcurrentBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "isInSystemBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "projectSettings": { "properties": { "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x" ] }, "buildCommand": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "framework": { "nullable": true, "type": "string", "enum": [ "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "services", "mastra", null ] }, "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", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" } }, "type": "object" }, "integrations": { "properties": { "status": { "type": "string", "enum": [ "skipped", "pending", "ready", "error", "timeout" ] }, "startedAt": { "type": "number" }, "claimedAt": { "type": "number" }, "completedAt": { "type": "number" }, "skippedAt": { "type": "number" }, "skippedBy": { "type": "string" } }, "required": [ "startedAt", "status" ], "type": "object" }, "images": { "properties": { "sizes": { "items": { "type": "number" }, "type": "array" }, "qualities": { "items": { "type": "number" }, "type": "array" }, "domains": { "items": { "type": "string" }, "type": "array" }, "remotePatterns": { "items": { "properties": { "protocol": { "type": "string", "enum": [ "http", "https" ], "description": "Must be `http` or `https`." }, "hostname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single subdomain. Double `**` matches any number of subdomains." }, "port": { "type": "string", "description": "Can be literal port such as `8080` or empty string meaning no port." }, "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "required": [ "hostname" ], "type": "object" }, "type": "array" }, "localPatterns": { "items": { "properties": { "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "type": "object" }, "type": "array" }, "minimumCacheTTL": { "type": "number" }, "formats": { "items": { "type": "string", "enum": [ "image/avif", "image/webp" ] }, "type": "array" }, "dangerouslyAllowSVG": { "type": "boolean", "enum": [ false, true ] }, "contentSecurityPolicy": { "type": "string" }, "contentDispositionType": { "type": "string", "enum": [ "inline", "attachment" ] } }, "type": "object" }, "alias": { "items": { "type": "string" }, "type": "array", "description": "A list of all the aliases (default aliases, staging aliases and production aliases) that were assigned upon deployment creation", "example": [] }, "aliasAssigned": { "type": "boolean", "enum": [ false, true ], "description": "A boolean that will be true when the aliases from the alias property were assigned successfully", "example": true }, "bootedAt": { "type": "number" }, "buildingAt": { "type": "number" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "creator": { "properties": { "uid": { "type": "string", "description": "The ID of the user that created the deployment", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" }, "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "initReadyAt": { "type": "number" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "entrypoint": { "nullable": true, "type": "string" }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "path": { "type": "string" }, "functionName": { "type": "string" } }, "required": [ "functionName", "path" ], "type": "object" }, "type": "array" } }, "required": [ "id", "output" ], "type": "object", "description": "A partial representation of a Build used by the deployment endpoint." }, "type": "array" }, "public": { "type": "boolean", "enum": [ false, true ], "description": "A boolean representing if the deployment is public or not. By default this is `false`", "example": false }, "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", "description": "The team that owns the deployment if any" }, "userAliases": { "items": { "type": "string" }, "type": "array", "description": "An array of domains that were provided by the user when creating the Deployment.", "example": [ "sub1.example.com", "sub2.example.com" ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "customEnvironment": { "oneOf": [ { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "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, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." }, { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." } ] }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "readyStateReason": { "type": "string" }, "aliasWarning": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "readyState": { "type": "string", "enum": [ "QUEUED", "BUILDING", "ERROR", "INITIALIZING", "READY", "CANCELED" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object", "description": "An object that will contain a `code` and a `message` when the aliasing fails, otherwise the value will be `null`", "example": null }, "aliasFinal": { "nullable": true, "type": "string" }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "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", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "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": [ "repoId", "type" ], "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": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "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": [ "projectId", "type" ], "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": [ "repoUuid", "type" ], "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": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "repoPushedAt": { "type": "number" }, "ref": { "nullable": true, "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "gitUrl": { "type": "string" } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "projectId": { "type": "number" } }, "required": [ "projectId", "ref", "sha", "type" ], "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": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "repoPushedAt": { "type": "number" } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" } ] }, "manualProvisioning": { "properties": { "state": { "type": "string", "enum": [ "PENDING", "COMPLETE", "TIMEOUT" ], "description": "Current provisioning state" }, "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" } }, "required": [ "state" ], "type": "object", "description": "Present when deployment was created with manual provisioning enabled, either explicitly or via the experimental BYOC git flow. The deployment stays in INITIALIZING until /continue is called." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "originCacheRegion": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x" ], "description": "If set it overrides the `projectSettings.nodeVersion` for this deployment." }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "readySubstate": { "type": "string", "enum": [ "STAGED", "ROLLING", "PROMOTED" ], "description": "Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - ROLLING: in the process of having production traffic gradually transitioned. - PROMOTED: has seen production traffic" }, "regions": { "items": { "type": "string" }, "type": "array", "description": "The regions the deployment exists in", "example": [ "sfo1" ] }, "softDeletedByRetention": { "type": "boolean", "enum": [ false, true ], "description": "flag to indicate if the deployment was deleted by retention policy", "example": "true" }, "source": { "type": "string", "enum": [ "api-trigger-git-deploy", "cli", "clone/repo", "git", "import", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from", "example": "cli" }, "target": { "nullable": true, "type": "string", "enum": [ "staging", "production", null ], "description": "If defined, either `staging` if a staging alias in the format `..now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the \"preview\" deployment.", "example": null }, "undeletedAt": { "type": "number", "description": "A number containing the date when the deployment was undeleted at milliseconds", "example": 1540257589405 }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" }, "userConfiguredDeploymentId": { "type": "string", "description": "Since January 2025 User-configured deployment ID for skew protection with pre-built deployments. This is set when users configure a custom deploymentId in their next.config.js file. This allows Next.js to use skew protection even when deployments are pre-built outside of Vercel's build system.", "example": "abc123" }, "version": { "type": "number", "enum": [ 2 ], "description": "The platform version that was used to create the deployment.", "example": 2 }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "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" }, "custom_environment_id": { "type": "string" }, "plan": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "projectId": { "type": "string" }, "plan": { "type": "string", "enum": [ "pro", "enterprise", "hobby" ] }, "platform": { "properties": { "source": { "properties": { "name": { "type": "string", "description": "Display name of the platform." } }, "required": [ "name" ], "type": "object", "description": "The external platform that created the deployment (e.g. its display name)." }, "origin": { "properties": { "type": { "type": "string", "enum": [ "id", "url" ], "description": "Whether the value is an opaque identifier or a URL." }, "value": { "type": "string", "description": "The identifier or URL pointing to the originating entity." } }, "required": [ "type", "value" ], "type": "object", "description": "Reference back to the entity on the platform that initiated the deployment." }, "creator": { "properties": { "name": { "type": "string", "description": "Display name of the platform user." }, "avatar": { "type": "string", "description": "URL of the platform user's avatar image." } }, "required": [ "name" ], "type": "object", "description": "The user on the external platform who triggered the deployment." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Arbitrary key-value metadata provided by the platform." } }, "required": [ "creator", "origin", "source" ], "type": "object", "description": "Metadata about the source platform that triggered the deployment. Allows us to map a deployment back to a platform (e.g. the chat that created it)" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "type": "string" }, "createdIn": { "type": "string" }, "crons": { "items": { "properties": { "schedule": { "type": "string" }, "path": { "type": "string" } }, "required": [ "path", "schedule" ], "type": "object" }, "type": "array" }, "functions": { "nullable": true, "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "x86_64", "arm64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "passiveConnectConfigurationId": { "type": "string", "description": "Since November 2023 this field defines a Secure Compute network 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", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "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": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, these are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object." }, "destination": { "type": "string" }, "statusCode": { "type": "number" }, "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" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "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", "enum": [ false, true ] }, "middleware": { "type": "number", "enum": [ 0 ] } }, "required": [ "continue", "middleware", "src" ], "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", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "namespace", "ownerType", "path", "private", "projectId", "type", "url" ], "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", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "repoId", "repoOwnerId", "type" ], "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", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repoUuid", "slug", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "type" ], "type": "object" } ] }, "flags": { "oneOf": [ { "properties": { "definitions": { "additionalProperties": { "properties": { "options": { "items": { "properties": { "value": { "$ref": "#/components/schemas/FlagJSONValue" }, "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." } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "mfeConfigUploadState": { "type": "string", "enum": [ "success", "waiting_on_build", "no_config" ], "description": "The result of the microfrontends config upload during deployment creation / build. Only set for default app deployments. The config upload is attempted during deployment create, and then again during the build. If the config is not in the root directory, or the deployment is prebuilt, the config cannot be uploaded during deployment create. The upload during deployment build finds the config even if it's not in the root directory, as it has access to all files. Uploading the config during create is ideal, as then all child deployments are guaranteed to have access to the default app deployment config even if the default app has not yet started building. If the config is not uploaded, the child app will show as building until the config has been uploaded during the default app build. - `success` - The config was uploaded successfully, either when the deployment was created or during the build. - `waiting_on_build` - The config could not be uploaded during deployment create, will be attempted again during the build. - `no_config` - No config was found. Only set once the build has not found the config in any of the deployment's files. - `undefined` - Legacy deployments, or there was an error uploading the config during deployment create." }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds", "isDefaultApp" ], "type": "object" } ] }, "config": { "properties": { "version": { "type": "number" }, "functionType": { "type": "string", "enum": [ "standard", "fluid" ] }, "functionMemoryType": { "type": "string", "enum": [ "standard", "standard_legacy", "performance" ] }, "functionTimeout": { "nullable": true, "type": "number" }, "secureComputePrimaryRegion": { "nullable": true, "type": "string" }, "secureComputeFallbackRegion": { "nullable": true, "type": "string" }, "isUsingActiveCPU": { "type": "boolean", "enum": [ false, true ] }, "resourceConfig": { "properties": { "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ], "description": "Build resource configuration snapshot for this deployment." } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." }, "elasticConcurrency": { "type": "string", "enum": [ "TEAM_SETTING", "PROJECT_SETTING", "SKIP_QUEUE" ], "description": "When elastic concurrency is used for this deployment, a value is set. The value tells the reason where the setting was coming from. - TEAM_SETTING: Inherited from team settings - PROJECT_SETTING: Inherited from project settings - SKIP_QUEUE: Manually triggered by user to skip the queues" }, "buildMachine": { "properties": { "purchaseType": { "nullable": true, "type": "string", "enum": [ "enhanced", "turbo", "standard", null ], "description": "Machine type that was used for the build." } }, "type": "object" } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." } }, "required": [ "functionMemoryType", "functionTimeout", "functionType", "secureComputeFallbackRegion", "secureComputePrimaryRegion" ], "type": "object", "description": "Since February 2025 the configuration must include snapshot data at the time of deployment creation to capture properties for the /deployments/:id/config endpoint utilized for displaying Deployment Configuration on the frontend This is optional because older deployments may not have this data captured" }, "checks": { "properties": { "deployment-alias": { "properties": { "state": { "type": "string", "enum": [ "succeeded", "failed", "pending" ] }, "startedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "startedAt", "state" ], "type": "object", "description": "Condensed check data. Retrieve individual check and check run data using api-checks v2 routes." } }, "required": [ "deployment-alias" ], "type": "object" }, "seatBlock": { "properties": { "blockCode": { "type": "string", "enum": [ "TEAM_ACCESS_REQUIRED", "COMMIT_AUTHOR_REQUIRED" ], "description": "The NSNB decision code for the seat block. TODO: We should consolidate block types." }, "userId": { "type": "string", "description": "The blocked vercel user ID." }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Determines if the user was verified during the block. In the git integration case, the commit sender was the author." }, "gitUserId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gitProvider": { "type": "string", "enum": [ "gitlab", "bitbucket", "github" ], "description": "The git provider type associated with gitUserId." } }, "required": [ "blockCode" ], "type": "object", "description": "NSNB Blocked metadata" }, "attribution": { "properties": { "commitMeta": { "properties": { "email": { "type": "string", "description": "Email from git commit author" }, "name": { "type": "string", "description": "Name from git commit author" }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Whether the commit was signed/verified (GitHub only, others return undefined)" } }, "type": "object", "description": "Commit metadata from the git commit author" }, "gitUser": { "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "login": { "type": "string", "description": "Git provider username/login" }, "type": { "type": "string", "description": "User type" }, "provider": { "type": "string", "description": "The git provider (github, gitlab, bitbucket)" } }, "required": [ "id", "login" ], "type": "object", "description": "Git provider user associated with the commit author email (only set if resolved)" }, "vercelUser": { "properties": { "id": { "type": "string", "description": "Vercel user ID" }, "username": { "type": "string", "description": "Vercel username" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Team roles at time of deployment" } }, "required": [ "id", "username" ], "type": "object", "description": "Vercel user linked to the git provider account (only set if resolved)" } }, "type": "object", "description": "Attribution metadata for the deployment, linking commit author to git and Vercel users. Only populated when the `enable-deployment-attribution` flag is enabled." } }, "required": [ "aliasAssigned", "bootedAt", "build", "buildSkipped", "buildingAt", "createdAt", "createdIn", "creator", "env", "id", "inspectorUrl", "isInConcurrentBuildsQueue", "isInSystemBuildsQueue", "meta", "name", "ownerId", "plan", "projectId", "projectSettings", "public", "readyState", "regions", "routes", "status", "type", "url", "version" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "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." }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "cancelDeployment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.deployments.cancelDeployment({\n id: \"dpl_5WJWYSyB7BpgTj3EuwF37WMRBXBtPQ2iTMJHJBJyRfd\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "cancelDeployment", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Deployments.CancelDeployment(ctx, \"dpl_5WJWYSyB7BpgTj3EuwF37WMRBXBtPQ2iTMJHJBJyRfd\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v5/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" }, "ttl": { "type": "number" }, "comment": { "type": "string" } }, "required": [ "created", "createdAt", "creator", "id", "name", "slug", "type", "updated", "updatedAt", "value" ], "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" }, "ttl": { "type": "number" }, "comment": { "type": "string" } }, "required": [ "created", "createdAt", "creator", "id", "name", "slug", "type", "updated", "updatedAt", "value" ], "type": "object" }, "type": "array" }, "pagination": { "$ref": "#/components/schemas/Pagination" } }, "required": [ "pagination", "records" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "ls", "list" ] }, "parameters": [ { "name": "domain", "in": "path", "required": true, "schema": { "type": "string", "example": "example.com" }, "x-vercel-cli": { "kind": "argument" } }, { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getRecords", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.dns.getRecords({\n domain: \"example.com\",\n limit: \"20\",\n since: \"1609499532000\",\n until: \"1612264332000\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": "The request is not authorized." }, "402": { "description": "The 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": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "bodyArguments": [ "name", "type", "value" ] }, "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" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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": 2.147483647e+09, "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": 2.147483647e+09, "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": 2.147483647e+09, "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": 2.147483647e+09, "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": 2.147483647e+09, "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": 2.147483647e+09, "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": { "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": 2.147483647e+09, "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": { "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": 2.147483647e+09, "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": 2.147483647e+09, "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": { "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": 2.147483647e+09, "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 } } } ] } } }, "required": true }, "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "createRecord", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.dns.createRecord({\n domain: \"example.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n type: \"NS\",\n ttl: 60,\n srv: {\n priority: 10,\n weight: 10,\n port: 5000,\n target: \"host.example.com\",\n },\n comment: \"used to verify ownership of domain\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "createRecord", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.DNS.CreateRecord(ctx, \"example.com\", nil, nil, vercel.Pointer(operations.CreateCreateRecordRequestBodyTen(\n operations.Ten{\n Type: operations.CreateRecordRequestBodyDNSRequest10TypeCname,\n TTL: vercel.Float64(60),\n HTTPS: operations.RequestBodyHTTPS{\n Priority: vercel.Float64(10),\n Target: \"host.example.com\",\n Params: vercel.String(\"alpn=h2,h3\"),\n },\n Comment: vercel.String(\"used to verify ownership of domain\"),\n },\n )))\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] } }, "/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": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "record", "record-sys" ] }, "value": { "type": "string" }, "creator": { "type": "string" }, "domain": { "type": "string" }, "ttl": { "type": "number" }, "comment": { "type": "string" }, "recordType": { "type": "string", "enum": [ "A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "SRV", "TXT", "NS" ] }, "createdAt": { "nullable": true, "type": "number" } }, "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": "The request is not authorized." }, "402": { "description": "The 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": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "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" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": false, "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", null ], "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": 2.147483647e+09, "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" } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateRecord", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.dns.updateRecord({\n recordId: \"rec_2qn7pzrx89yxy34vezpd31y9\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"example-1\",\n value: \"google.com\",\n type: \"A\",\n ttl: 60,\n srv: null,\n https: null,\n comment: \"used to verify ownership of domain\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "updateRecord", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.DNS.UpdateRecord(ctx, \"rec_2qn7pzrx89yxy34vezpd31y9\", nil, nil, &operations.UpdateRecordRequestBody{\n Name: vercel.String(\"example-1\"),\n Value: vercel.String(\"google.com\"),\n Type: operations.UpdateRecordTypeA.ToPointer(),\n TTL: vercel.Int64(60),\n Srv: &operations.Srv{\n Target: vercel.String(\"example2.com.\"),\n Weight: vercel.Int64(97604),\n Port: vercel.Int64(570172),\n Priority: vercel.Int64(199524),\n },\n HTTPS: &operations.HTTPS{\n Priority: vercel.Int64(35000),\n Target: vercel.String(\"example2.com.\"),\n },\n Comment: vercel.String(\"used to verify ownership of domain\"),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "parameters": [ { "name": "domain", "in": "path", "required": true, "schema": { "type": "string", "example": "example.com" }, "x-vercel-cli": { "kind": "argument" } }, { "name": "recordId", "in": "path", "required": true, "schema": { "type": "string", "example": "rec_V0fra8eEgQwEpFhYG2vTzC3K" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "removeRecord", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.dns.removeRecord({\n domain: \"example.com\",\n recordId: \"rec_V0fra8eEgQwEpFhYG2vTzC3K\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "removeRecord", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.DNS.RemoveRecord(ctx, \"example.com\", \"rec_V0fra8eEgQwEpFhYG2vTzC3K\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/registrar/tlds/supported": { "get": { "tags": [ "domains-registrar" ], "operationId": "getSupportedTlds", "parameters": [ { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "A list of the TLDs supported by Vercel.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TldName" }, "description": "A list of the TLDs supported by Vercel." } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpApiDecodeError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get a list of TLDs supported by Vercel", "summary": "Get supported TLDs", "x-codeSamples": [ { "lang": "typescript", "label": "getSupportedTlds", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getSupportedTlds({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/tlds/{tld}": { "get": { "tags": [ "domains-registrar" ], "operationId": "getTld", "parameters": [ { "name": "tld", "in": "path", "schema": { "$ref": "#/components/schemas/TldName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "supportedLanguageCodes" ], "properties": { "supportedLanguageCodes": { "type": "object", "properties": {}, "additionalProperties": { "type": "string" }, "description": "The language codes that are supported for the TLD. The key is the language code, and the value is the name of the language." } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get the metadata for a specific TLD.", "summary": "Get TLD", "x-codeSamples": [ { "lang": "typescript", "label": "getTld", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getTld({\n tld: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/tlds/{tld}/price": { "get": { "tags": [ "domains-registrar" ], "operationId": "getTldPrice", "parameters": [ { "name": "tld", "in": "path", "schema": { "$ref": "#/components/schemas/TldName" }, "required": true }, { "name": "years", "in": "query", "schema": { "type": "string", "description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used." }, "required": false, "description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used." }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "years", "purchasePrice", "renewalPrice", "transferPrice" ], "properties": { "years": { "type": "number", "description": "The number of years the returned price is for." }, "purchasePrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] }, "renewalPrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] }, "transferPrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get price data for a specific TLD. This only reflects base prices for the given TLD. Premium domains may have different prices. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to get the price data for a specific domain.", "summary": "Get TLD price data", "x-codeSamples": [ { "lang": "typescript", "label": "getTldPrice", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getTldPrice({\n tld: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/domains/{domain}/availability": { "get": { "tags": [ "domains-registrar" ], "operationId": "getDomainAvailability", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "available" ], "properties": { "available": { "type": "boolean" } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpApiDecodeError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "404": { "description": "NotFound", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get availability for a specific domain. If the domain is available, it can be purchased using the [Buy a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-a-domain) endpoint or the [Buy multiple domains](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-multiple-domains) endpoint.", "summary": "Get availability for a domain", "x-codeSamples": [ { "lang": "typescript", "label": "getDomainAvailability", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getDomainAvailability({\n domain: \"hungry-birdbath.info\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/domains/{domain}/price": { "get": { "tags": [ "domains-registrar" ], "operationId": "getDomainPrice", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "years", "in": "query", "schema": { "type": "string", "description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used." }, "required": false, "description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used." }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "years", "purchasePrice", "renewalPrice", "transferPrice" ], "properties": { "years": { "type": "number" }, "purchasePrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] }, "renewalPrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] }, "transferPrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/BadRequest" }, { "$ref": "#/components/schemas/DomainTooShort" }, { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get price data for a specific domain", "summary": "Get price data for a domain", "x-codeSamples": [ { "lang": "typescript", "label": "getDomainPrice", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getDomainPrice({\n domain: \"excited-dwell.org\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/domains/availability": { "post": { "tags": [ "domains-registrar" ], "operationId": "getBulkAvailability", "parameters": [ { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "results" ], "properties": { "results": { "type": "array", "items": { "type": "object", "required": [ "domain", "available" ], "properties": { "domain": { "$ref": "#/components/schemas/DomainName" }, "available": { "type": "boolean" } }, "additionalProperties": false } } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpApiDecodeError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get availability for multiple domains. If the domains are available, they can be purchased using the [Buy a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-a-domain) endpoint or the [Buy multiple domains](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-multiple-domains) endpoint.", "summary": "Get availability for multiple domains", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "domains" ], "properties": { "domains": { "type": "array", "minItems": 1, "items": { "$ref": "#/components/schemas/DomainName" }, "description": "an array of at most 50 item(s)", "title": "maxItems(50)", "maxItems": 50 } }, "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "getBulkAvailability", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getBulkAvailability({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n domains: [\n \"\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/domains/{domain}/auth-code": { "get": { "tags": [ "domains-registrar" ], "operationId": "getDomainAuthCode", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "authCode" ], "properties": { "authCode": { "type": "string" } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/DomainNotRegistered" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "The domain was not found in our system.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DomainNotFound" } } } }, "409": { "description": "The domain cannot be transfered out until the specified date.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DomainCannotBeTransferedOutUntil" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get the auth code for a domain. This is required to transfer a domain from Vercel to another registrar.", "summary": "Get the auth code for a domain", "x-codeSamples": [ { "lang": "typescript", "label": "getDomainAuthCode", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getDomainAuthCode({\n domain: \"ruddy-coil.org\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/domains/{domain}/buy": { "post": { "tags": [ "domains-registrar" ], "operationId": "buySingleDomain", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "orderId", "_links" ], "properties": { "orderId": { "$ref": "#/components/schemas/OrderId" }, "_links": { "type": "object", "additionalProperties": { "type": "object", "required": [ "href", "method" ], "properties": { "href": { "type": "string" }, "method": { "type": "string", "enum": [ "GET", "POST", "PUT", "DELETE", "PATCH" ] } }, "additionalProperties": false } } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/DomainTooShort" }, { "$ref": "#/components/schemas/OrderTooExpensive" }, { "$ref": "#/components/schemas/InvalidAdditionalContactInfo" }, { "$ref": "#/components/schemas/AdditionalContactInfoRequired" }, { "$ref": "#/components/schemas/ExpectedPriceMismatch" }, { "$ref": "#/components/schemas/DomainNotAvailable" }, { "$ref": "#/components/schemas/LanguageCodeRequired" }, { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Buy a domain", "summary": "Buy a domain", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "autoRenew", "years", "expectedPrice", "contactInformation" ], "properties": { "autoRenew": { "type": "boolean", "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." }, "years": { "type": "number", "description": "The number of years to purchase the domain for." }, "expectedPrice": { "type": "number", "minimum": 0.01 }, "contactInformation": { "type": "object", "required": [ "firstName", "lastName", "email", "phone", "address1", "city", "state", "zip", "country" ], "properties": { "firstName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "lastName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "email": { "$ref": "#/components/schemas/EmailAddress" }, "phone": { "$ref": "#/components/schemas/E164PhoneNumber" }, "address1": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "address2": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "city": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "state": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "zip": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "country": { "$ref": "#/components/schemas/CountryCode" }, "companyName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "fax": { "$ref": "#/components/schemas/E164PhoneNumber" }, "additional": { "type": "object", "properties": {} } }, "additionalProperties": false, "description": "The contact information for the domain. Some TLDs require additional contact information. Use the [Get contact info schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) endpoint to retrieve the required fields." }, "languageCode": { "type": "string", "description": "The language code for the domain. For punycode domains, this must be provided. The list of supported language codes for a TLD can be retrieved from the [Get TLD](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-tld) endpoint." } }, "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "buySingleDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.buySingleDomain({\n domain: \"metallic-simple.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n autoRenew: false,\n years: 7602.67,\n expectedPrice: 7390.34,\n contactInformation: {\n firstName: \"Lexie\",\n lastName: \"Lemke\",\n email: \"Lionel21@gmail.com\",\n phone: \"550.220.6330 x258\",\n address1: \"\",\n city: \"Spencerport\",\n state: \"West Virginia\",\n zip: \"46432\",\n country: \"MM\",\n },\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/domains/buy": { "post": { "tags": [ "domains-registrar" ], "operationId": "buyDomains", "parameters": [ { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "orderId", "_links" ], "properties": { "orderId": { "$ref": "#/components/schemas/OrderId" }, "_links": { "type": "object", "additionalProperties": { "type": "object", "required": [ "href", "method" ], "properties": { "href": { "type": "string" }, "method": { "type": "string", "enum": [ "GET", "POST", "PUT", "DELETE", "PATCH" ] } }, "additionalProperties": false } } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/DomainTooShort" }, { "$ref": "#/components/schemas/OrderTooExpensive" }, { "$ref": "#/components/schemas/TooManyDomains" }, { "$ref": "#/components/schemas/InvalidAdditionalContactInfo" }, { "$ref": "#/components/schemas/AdditionalContactInfoRequired" }, { "$ref": "#/components/schemas/DuplicateDomains" }, { "$ref": "#/components/schemas/ExpectedPriceMismatch" }, { "$ref": "#/components/schemas/DomainNotAvailable" }, { "$ref": "#/components/schemas/LanguageCodeRequired" }, { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Buy multiple domains at once", "summary": "Buy multiple domains", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "domains", "contactInformation" ], "properties": { "domains": { "type": "array", "minItems": 1, "items": { "type": "object", "required": [ "domainName", "autoRenew", "years", "expectedPrice" ], "properties": { "domainName": { "$ref": "#/components/schemas/DomainName" }, "autoRenew": { "type": "boolean", "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." }, "years": { "type": "number", "description": "The number of years to purchase the domain for." }, "expectedPrice": { "type": "number", "minimum": 0.01 }, "languageCode": { "type": "string", "description": "The language code for the domain. For punycode domains, this must be provided. The list of supported language codes for a TLD can be retrieved from the [Get TLD](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-tld) endpoint." } }, "additionalProperties": false } }, "contactInformation": { "type": "object", "required": [ "firstName", "lastName", "email", "phone", "address1", "city", "state", "zip", "country" ], "properties": { "firstName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "lastName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "email": { "$ref": "#/components/schemas/EmailAddress" }, "phone": { "$ref": "#/components/schemas/E164PhoneNumber" }, "address1": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "address2": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "city": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "state": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "zip": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "country": { "$ref": "#/components/schemas/CountryCode" }, "companyName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "fax": { "$ref": "#/components/schemas/E164PhoneNumber" }, "additional": { "type": "object", "properties": {} } }, "additionalProperties": false, "description": "The contact information for the domain. Some TLDs require additional contact information. Use the [Get contact info schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) endpoint to retrieve the required fields." } }, "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "buyDomains", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.buyDomains({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n domains: [],\n contactInformation: {\n firstName: \"Leonie\",\n lastName: \"Johnston\",\n email: \"Anna_Fisher13@hotmail.com\",\n phone: \"(688) 699-0656\",\n address1: \"\",\n city: \"Rennerland\",\n state: \"New Jersey\",\n zip: \"70054\",\n country: \"GF\",\n },\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/domains/{domain}/transfer": { "post": { "tags": [ "domains-registrar" ], "operationId": "transferInDomain", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "orderId", "_links" ], "properties": { "orderId": { "$ref": "#/components/schemas/OrderId" }, "_links": { "type": "object", "additionalProperties": { "type": "object", "required": [ "href", "method" ], "properties": { "href": { "type": "string" }, "method": { "type": "string", "enum": [ "GET", "POST", "PUT", "DELETE", "PATCH" ] } }, "additionalProperties": false } } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/BadRequest" }, { "$ref": "#/components/schemas/DomainAlreadyOwned" }, { "$ref": "#/components/schemas/DomainTooShort" }, { "$ref": "#/components/schemas/DNSSECEnabled" }, { "$ref": "#/components/schemas/ExpectedPriceMismatch" }, { "$ref": "#/components/schemas/DomainNotAvailable" }, { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Transfer a domain in from another registrar", "summary": "Transfer-in a domain", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "authCode", "autoRenew", "years", "expectedPrice", "contactInformation" ], "properties": { "authCode": { "type": "string", "description": "The auth code for the domain. You must obtain this code from the losing registrar." }, "autoRenew": { "type": "boolean", "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." }, "years": { "type": "number", "description": "The number of years to renew the domain for once it is transferred in. This must be a valid number of transfer years for the TLD." }, "expectedPrice": { "type": "number", "minimum": 0.01 }, "contactInformation": { "type": "object", "required": [ "firstName", "lastName", "email", "phone", "address1", "city", "state", "zip", "country" ], "properties": { "firstName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "lastName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "email": { "$ref": "#/components/schemas/EmailAddress" }, "phone": { "$ref": "#/components/schemas/E164PhoneNumber" }, "address1": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "address2": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "city": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "state": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "zip": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "country": { "$ref": "#/components/schemas/CountryCode" }, "companyName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "fax": { "$ref": "#/components/schemas/E164PhoneNumber" } }, "additionalProperties": false } }, "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "transferInDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.transferInDomain({\n domain: \"silky-fund.org\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n authCode: \"\",\n autoRenew: true,\n years: 298.08,\n expectedPrice: 5092.5,\n contactInformation: {\n firstName: \"Gabrielle\",\n lastName: \"Hackett\",\n email: \"Keshawn99@yahoo.com\",\n phone: \"(758) 385-1802 x13762\",\n address1: \"\",\n city: \"Pattiestead\",\n state: \"Idaho\",\n zip: \"64653-9022\",\n country: \"JO\",\n },\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "tags": [ "domains-registrar" ], "operationId": "getDomainTransferIn", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string", "enum": [ "canceled", "canceled_pending_refund", "completed", "created", "failed", "pending", "pending_insert", "pending_new_auth_code", "pending_transfer", "pending_unlock", "pending_registry_unlock", "rejected", "submitting_transfer" ] } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpApiDecodeError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "NotFound", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get the transfer status for a domain", "summary": "Get a domain's transfer status", "x-codeSamples": [ { "lang": "typescript", "label": "getDomainTransferIn", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getDomainTransferIn({\n domain: \"unsung-antelope.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/domains/{domain}/renew": { "post": { "tags": [ "domains-registrar" ], "operationId": "renewDomain", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "orderId", "_links" ], "properties": { "orderId": { "$ref": "#/components/schemas/OrderId" }, "_links": { "type": "object", "additionalProperties": { "type": "object", "required": [ "href", "method" ], "properties": { "href": { "type": "string" }, "method": { "type": "string", "enum": [ "GET", "POST", "PUT", "DELETE", "PATCH" ] } }, "additionalProperties": false } } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/BadRequest" }, { "$ref": "#/components/schemas/DomainTooShort" }, { "$ref": "#/components/schemas/DomainNotRegistered" }, { "$ref": "#/components/schemas/ExpectedPriceMismatch" }, { "$ref": "#/components/schemas/DomainNotAvailable" }, { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "The domain was not found in our system.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DomainNotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Renew a domain", "summary": "Renew a domain", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "years", "expectedPrice" ], "properties": { "years": { "type": "number", "description": "The number of years to renew the domain for." }, "expectedPrice": { "type": "number", "minimum": 0.01 }, "contactInformation": { "type": "object", "required": [ "firstName", "lastName", "email", "phone", "address1", "city", "state", "zip", "country" ], "properties": { "firstName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "lastName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "email": { "$ref": "#/components/schemas/EmailAddress" }, "phone": { "$ref": "#/components/schemas/E164PhoneNumber" }, "address1": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "address2": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "city": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "state": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "zip": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "country": { "$ref": "#/components/schemas/CountryCode" }, "companyName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "fax": { "$ref": "#/components/schemas/E164PhoneNumber" } }, "additionalProperties": false } }, "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "renewDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.renewDomain({\n domain: \"scaly-daughter.biz\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n years: 1981.72,\n expectedPrice: 7096.16,\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/domains/{domain}/auto-renew": { "patch": { "tags": [ "domains-registrar" ], "operationId": "updateDomainAutoRenew", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "204": { "description": "Success" }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/DomainAlreadyRenewing" }, { "$ref": "#/components/schemas/DomainNotRenewable" }, { "$ref": "#/components/schemas/DomainNotRegistered" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "The domain was not found in our system.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DomainNotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Update the auto-renew setting for a domain", "summary": "Update auto-renew for a domain", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "autoRenew" ], "properties": { "autoRenew": { "type": "boolean" } }, "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateDomainAutoRenew", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.domainsRegistrar.updateDomainAutoRenew({\n domain: \"worthwhile-dwell.net\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n autoRenew: true,\n },\n });\n\n\n}\n\nrun();" } ] } }, "/v1/registrar/domains/{domain}/nameservers": { "patch": { "tags": [ "domains-registrar" ], "operationId": "updateDomainNameservers", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "204": { "description": "Success" }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/DomainNotRegistered" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "The domain was not found in our system.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DomainNotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Update the nameservers for a domain. Pass an empty array to use Vercel's default nameservers.", "summary": "Update nameservers for a domain", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "nameservers" ], "properties": { "nameservers": { "type": "array", "items": { "$ref": "#/components/schemas/Nameserver" } } }, "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateDomainNameservers", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.domainsRegistrar.updateDomainNameservers({\n domain: \"unique-formula.biz\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n nameservers: [\n \"\",\n ],\n },\n });\n\n\n}\n\nrun();" } ] } }, "/v1/registrar/domains/{domain}/contact-info/schema": { "get": { "tags": [ "domains-registrar" ], "operationId": "getContactInfoSchema", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/BadRequest" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Some TLDs require additional contact information. Use this endpoint to get the schema for the tld-specific contact information for a domain.", "summary": "Get contact info schema", "x-codeSamples": [ { "lang": "typescript", "label": "getContactInfoSchema", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getContactInfoSchema({\n domain: \"tricky-issue.name\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/orders/{orderId}": { "get": { "tags": [ "domains-registrar" ], "operationId": "getOrder", "parameters": [ { "name": "orderId", "in": "path", "schema": { "$ref": "#/components/schemas/OrderId" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "orderId", "domains", "status" ], "properties": { "orderId": { "$ref": "#/components/schemas/OrderId" }, "domains": { "type": "array", "items": { "anyOf": [ { "type": "object", "required": [ "purchaseType", "autoRenew", "years", "domainName", "status", "price" ], "properties": { "purchaseType": { "type": "string", "enum": [ "purchase" ] }, "autoRenew": { "type": "boolean" }, "years": { "type": "number", "description": "The number of years the domain is being purchased for." }, "domainName": { "$ref": "#/components/schemas/DomainName" }, "status": { "type": "string", "enum": [ "pending", "completed", "failed", "refunded", "refund-failed" ] }, "price": { "type": "number", "minimum": 0.01 }, "error": { "anyOf": [ { "anyOf": [ { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "unsupported-language-code" ] }, "details": { "type": "object", "required": [ "detectedLanguageCode" ], "properties": { "detectedLanguageCode": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "incorrect-language-code" ] }, "details": { "type": "object", "required": [ "detectedLanguageCode" ], "properties": { "detectedLanguageCode": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "client-transfer-prohibited" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "incorrect-auth-code" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "claims-notice-required" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "cannot-transfer-in-until" ] }, "details": { "type": "object", "required": [ "numDaysUntilTransferrable" ], "properties": { "numDaysUntilTransferrable": { "type": "number" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "account-transfer-required" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "price-change" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "unavailable-legal" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "invalid-contact" ] }, "details": { "type": "object", "properties": { "invalidField": { "type": "string", "enum": [ "firstName", "lastName", "email", "phone", "address1", "address2", "city", "state", "zip", "country", "companyName", "fax" ] } }, "additionalProperties": false } }, "additionalProperties": false } ] }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string" }, "details": { "title": "unknown" } }, "additionalProperties": false } ] } }, "additionalProperties": false }, { "type": "object", "required": [ "purchaseType", "years", "domainName", "status", "price" ], "properties": { "purchaseType": { "type": "string", "enum": [ "renewal" ] }, "years": { "type": "number", "description": "The number of years the domain is being renewed for." }, "domainName": { "$ref": "#/components/schemas/DomainName" }, "status": { "type": "string", "enum": [ "pending", "completed", "failed", "refunded", "refund-failed" ] }, "price": { "type": "number", "minimum": 0.01 }, "error": { "anyOf": [ { "anyOf": [ { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "unsupported-language-code" ] }, "details": { "type": "object", "required": [ "detectedLanguageCode" ], "properties": { "detectedLanguageCode": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "incorrect-language-code" ] }, "details": { "type": "object", "required": [ "detectedLanguageCode" ], "properties": { "detectedLanguageCode": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "client-transfer-prohibited" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "incorrect-auth-code" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "claims-notice-required" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "cannot-transfer-in-until" ] }, "details": { "type": "object", "required": [ "numDaysUntilTransferrable" ], "properties": { "numDaysUntilTransferrable": { "type": "number" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "account-transfer-required" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "price-change" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "unavailable-legal" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "invalid-contact" ] }, "details": { "type": "object", "properties": { "invalidField": { "type": "string", "enum": [ "firstName", "lastName", "email", "phone", "address1", "address2", "city", "state", "zip", "country", "companyName", "fax" ] } }, "additionalProperties": false } }, "additionalProperties": false } ] }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string" }, "details": { "title": "unknown" } }, "additionalProperties": false } ] } }, "additionalProperties": false }, { "type": "object", "required": [ "purchaseType", "autoRenew", "years", "domainName", "status", "price" ], "properties": { "purchaseType": { "type": "string", "enum": [ "transfer" ] }, "autoRenew": { "type": "boolean" }, "years": { "type": "number", "description": "The number of years the domain is being transferred for." }, "domainName": { "$ref": "#/components/schemas/DomainName" }, "status": { "type": "string", "enum": [ "pending", "completed", "failed", "refunded", "refund-failed" ] }, "price": { "type": "number", "minimum": 0.01 }, "error": { "anyOf": [ { "anyOf": [ { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "unsupported-language-code" ] }, "details": { "type": "object", "required": [ "detectedLanguageCode" ], "properties": { "detectedLanguageCode": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "incorrect-language-code" ] }, "details": { "type": "object", "required": [ "detectedLanguageCode" ], "properties": { "detectedLanguageCode": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "client-transfer-prohibited" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "incorrect-auth-code" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "claims-notice-required" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "cannot-transfer-in-until" ] }, "details": { "type": "object", "required": [ "numDaysUntilTransferrable" ], "properties": { "numDaysUntilTransferrable": { "type": "number" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "account-transfer-required" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "price-change" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "unavailable-legal" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "invalid-contact" ] }, "details": { "type": "object", "properties": { "invalidField": { "type": "string", "enum": [ "firstName", "lastName", "email", "phone", "address1", "address2", "city", "state", "zip", "country", "companyName", "fax" ] } }, "additionalProperties": false } }, "additionalProperties": false } ] }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string" }, "details": { "title": "unknown" } }, "additionalProperties": false } ] } }, "additionalProperties": false } ] } }, "status": { "type": "string", "enum": [ "draft", "purchasing", "completed", "failed" ] }, "error": { "anyOf": [ { "anyOf": [ { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "payment-failed" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "tld-outage" ] }, "details": { "type": "object", "required": [ "tlds" ], "properties": { "tlds": { "type": "array", "items": { "type": "object", "required": [ "tldName", "endsAt" ], "properties": { "tldName": { "type": "string" }, "endsAt": { "type": "string" } }, "additionalProperties": false } } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "price-mismatch" ] }, "details": { "type": "object", "required": [ "expectedPrice" ], "properties": { "expectedPrice": { "type": "number" }, "actualPrice": { "type": "number" } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "unexpected-error" ] } }, "additionalProperties": false }, { "type": "object", "required": [ "code", "details" ], "properties": { "code": { "type": "string", "enum": [ "claims-required" ] }, "details": { "type": "object", "required": [ "message", "domainNames" ], "properties": { "message": { "type": "string" }, "domainNames": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } }, "additionalProperties": false }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "enum": [ "domain-mismatch" ] } }, "additionalProperties": false } ] }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string" }, "details": { "title": "unknown" } }, "additionalProperties": false } ] } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpApiDecodeError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "NotFound", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get information about a domain order by its ID", "summary": "Get a domain order", "x-codeSamples": [ { "lang": "typescript", "label": "getOrder", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getOrder({\n orderId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": [ "A", "CNAME", "http", "dns-01", null ], "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." }, "recommendedIPv4": { "items": { "properties": { "rank": { "type": "number" }, "value": { "items": { "type": "string" }, "type": "array" } }, "required": [ "rank", "value" ], "type": "object", "description": "Recommended IPv4s for the domain. rank=1 is the preferred value(s) to use. Only using 1 ip value is acceptable." }, "type": "array", "description": "Recommended IPv4s for the domain. rank=1 is the preferred value(s) to use. Only using 1 ip value is acceptable." }, "recommendedCNAME": { "items": { "properties": { "rank": { "type": "number" }, "value": { "type": "string" } }, "required": [ "rank", "value" ], "type": "object", "description": "Recommended CNAMEs for the domain. rank=1 is the preferred value to use." }, "type": "array", "description": "Recommended CNAMEs for the domain. rank=1 is the preferred value to use." }, "misconfigured": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not the domain is configured AND we can automatically generate a TLS certificate." } }, "required": [ "acceptedChallenges", "configuredBy", "misconfigured", "recommendedCNAME", "recommendedIPv4" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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": "projectIdOrName", "description": "The project id or name that will be associated with the domain. Use this when the domain is not yet associated with a project.", "in": "query", "required": false, "schema": { "description": "The project id or name that will be associated with the domain. Use this when the domain is not yet associated with a project.", "type": "string" } }, { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getDomainConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domains.getDomainConfig({\n domain: \"example.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getDomainConfig", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Domains.GetDomainConfig(ctx, \"example.com\", nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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", "enum": [ false, true ] }, "expiresAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel." }, "verified": { "type": "boolean", "enum": [ false, true ], "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", "enum": [ false, true ] }, "id": { "type": "string" } }, "required": [ "email", "id", "username" ], "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" }, "teamId": { "nullable": true, "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 }, "id": { "type": "string", "description": "The unique identifier of the domain.", "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" }, "renew": { "type": "boolean", "enum": [ false, true ], "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": [ "boughtAt", "createdAt", "creator", "expiresAt", "id", "intendedNameservers", "name", "nameservers", "serviceType", "suffix", "teamId", "userId", "verified" ], "type": "object" } }, "required": [ "domain" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "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" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domains.getDomain({\n domain: \"example.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getDomain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Domains.GetDomain(ctx, \"example.com\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": { "expiresAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel." }, "verified": { "type": "boolean", "enum": [ false, true ], "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", "enum": [ false, true ] }, "id": { "type": "string" } }, "required": [ "email", "id", "username" ], "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" }, "teamId": { "nullable": true, "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 }, "id": { "type": "string", "description": "The unique identifier of the domain.", "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" }, "renew": { "type": "boolean", "enum": [ false, true ], "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": [ "boughtAt", "createdAt", "creator", "expiresAt", "id", "intendedNameservers", "name", "nameservers", "serviceType", "teamId", "userId", "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "409": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "ls", "list" ] }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getDomains", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domains.getDomains({\n limit: 20,\n since: 1609499532000,\n until: 1612264332000,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getDomains", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Domains.GetDomains(ctx, operations.GetDomainsRequest{\n Limit: vercel.Float64(20),\n Since: vercel.Float64(1609499532000),\n Until: vercel.Float64(1612264332000),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v7/domains": { "post": { "description": "This endpoint is used for adding a new apex domain name with Vercel for the authenticating user. Note: This endpoint is no longer used for initiating domain transfers from external registrars to Vercel. For this, please use the endpoint [Transfer-in a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/transfer-in-a-domain).", "operationId": "createOrTransferDomain", "security": [ { "bearerToken": [] } ], "summary": "Add an existing domain to the Vercel platform", "tags": [ "domains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "domain": { "properties": { "expiresAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel." }, "verified": { "type": "boolean", "enum": [ false, true ], "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", "enum": [ false, true ] }, "id": { "type": "string" } }, "required": [ "email", "id", "username" ], "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" }, "teamId": { "nullable": true, "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 }, "id": { "type": "string", "description": "The unique identifier of the domain.", "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" }, "renew": { "type": "boolean", "enum": [ false, true ], "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": [ "boughtAt", "createdAt", "creator", "expiresAt", "id", "intendedNameservers", "name", "nameservers", "serviceType", "teamId", "userId", "verified" ], "type": "object" } }, "required": [ "domain" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "The domain is not allowed to be used" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "bodyArguments": [ "name" ] }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "properties": { "method": { "description": "The domain operation to perform. It can be either `add` or `move-in`.", "type": "string", "example": "add" } }, "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": { "description": "Whether to create a DNS zone on Vercel. Set `true` if using Vercel nameservers.", "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$$" } } } ] } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createOrTransferDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domains.createOrTransferDomain({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"example.com\",\n method: \"transfer-in\",\n token: \"fdhfr820ad#@FAdlj$$\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v3/domains/{domain}": { "patch": { "description": "Update or move apex domain. Note: This endpoint is no longer used for updating auto-renew or nameservers. For this, please use the endpoints [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) and [Update nameservers for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-nameservers-for-a-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", "enum": [ false, true ] } }, "required": [ "moved" ], "type": "object" }, { "properties": { "moved": { "type": "boolean", "enum": [ false, true ] }, "token": { "type": "string" } }, "required": [ "moved", "token" ], "type": "object" }, { "properties": { "renew": { "type": "boolean", "enum": [ false, true ] }, "customNameservers": { "items": { "type": "string" }, "type": "array" }, "zone": { "type": "boolean", "enum": [ false, true ] } }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "domain", "in": "path", "schema": { "type": "string" }, "required": true }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "description": "update", "additionalProperties": false, "properties": { "op": { "example": "update", "type": "string" }, "renew": { "description": "This field is deprecated. Please use PATCH /v1/registrar/domains/{domainName}/auto-renew instead.", "type": "boolean", "deprecated": true }, "customNameservers": { "description": "This field is deprecated. Please use PATCH /v1/registrar/domains/{domainName}/nameservers instead.", "items": { "type": "string" }, "maxItems": 4, "minItems": 0, "type": "array", "uniqueItems": true, "deprecated": 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" } } } ] } } }, "required": true }, "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "patchDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domains.patchDomain({\n domain: \"flimsy-napkin.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n op: \"update\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "patchDomain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Domains.PatchDomain(ctx, \"tight-secrecy.info\", nil, nil, vercel.Pointer(operations.CreatePatchDomainRequestBodyPatchDomainRequestBody1(\n operations.PatchDomainRequestBody1{\n Op: vercel.String(\"update\"),\n },\n )))\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] } }, "/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" } }, "required": [ "uid" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "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" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domains.deleteDomain({\n domain: \"example.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "deleteDomain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Domains.DeleteDomain(ctx, \"example.com\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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 (deprecated)", "tags": [ "logDrains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "createdFrom": { "type": "string" }, "clientId": { "type": "string" }, "configurationId": { "type": "string" }, "projectsMetadata": { "nullable": true, "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string", "enum": [ "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "services", "mastra", null ] }, "latestDeployment": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" } }, "required": [ "createdFrom" ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getConfigurableLogDrain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.logDrains.getConfigurableLogDrain({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getConfigurableLogDrain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.LogDrains.GetConfigurableLogDrain(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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 (deprecated)", "tags": [ "logDrains" ], "responses": { "204": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteConfigurableLogDrain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.logDrains.deleteConfigurableLogDrain({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "deleteConfigurableLogDrain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.LogDrains.DeleteConfigurableLogDrain(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/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 (deprecated)", "tags": [ "logDrains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "items": { "type": "object", "properties": { "createdFrom": { "type": "string" }, "clientId": { "type": "string" }, "configurationId": { "type": "string" }, "projectsMetadata": { "nullable": true, "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string", "enum": [ "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "services", "mastra", null ] }, "latestDeployment": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" } }, "required": [ "createdFrom" ] }, "type": "array" }, { "properties": { "drains": { "oneOf": [ { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "enabled", "disabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "disabled-by-owner", "feature-not-available", "account-plan-downgrade", "disabled-by-admin" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none", "gzip" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filter": { "type": "string" }, "filterV2": { "oneOf": [ { "properties": { "version": { "type": "string", "enum": [ "v1" ] } }, "required": [ "version" ], "type": "object" }, { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "production", "preview" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } ] } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, "type": "array" }, { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "enabled", "disabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "disabled-by-owner", "feature-not-available", "account-plan-downgrade", "disabled-by-admin" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none", "gzip" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filter": { "type": "string" }, "filterV2": { "oneOf": [ { "properties": { "version": { "type": "string", "enum": [ "v1" ] } }, "required": [ "version" ], "type": "object" }, { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "production", "preview" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } ] }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "integration", "drain" ] } }, "required": [ "access", "managedBy" ], "type": "object" }, { "properties": { "access": { "type": "string", "enum": [ "some" ] }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "managedBy": { "type": "string", "enum": [ "integration", "drain" ] } }, "required": [ "access", "managedBy", "projectIds" ], "type": "object" } ] } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, "type": "array" } ] } }, "required": [ "drains" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "projectId", "in": "query", "schema": { "pattern": "^[a-zA-z0-9_]+$", "type": "string" } }, { "name": "projectIdOrName", "in": "query", "schema": { "type": "string" } }, { "name": "includeMetadata", "in": "query", "schema": { "type": "boolean", "default": false } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getAllLogDrains", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.logDrains.getAllLogDrains({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getAllLogDrains", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.LogDrains.GetAllLogDrains(ctx, nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.ResponseBodies != nil {\n // handle response\n }\n}" } ] }, "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 (deprecated)", "tags": [ "logDrains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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", "minimum": 0.01, "maximum": 1, "multipleOf": 0.01 }, "name": { "type": "string", "description": "The custom name of this log drain." } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "createConfigurableLogDrain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.logDrains.createConfigurableLogDrain({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n deliveryFormat: \"json\",\n url: \"https://wavy-meander.net\",\n sources: [],\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "createConfigurableLogDrain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.LogDrains.CreateConfigurableLogDrain(ctx, nil, nil, &operations.CreateConfigurableLogDrainRequestBody{\n DeliveryFormat: operations.CreateConfigurableLogDrainDeliveryFormatJSON,\n URL: \"https://sugary-technician.name\",\n Sources: []operations.CreateConfigurableLogDrainSources{\n operations.CreateConfigurableLogDrainSourcesExternal,\n },\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/drains": { "post": { "description": "Create a new Drain with the provided configuration.", "operationId": "createDrain", "security": [ { "bearerToken": [] } ], "summary": "Create a new Drain", "tags": [ "drains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "enabled", "disabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "disabled-by-owner", "feature-not-available", "account-plan-downgrade", "disabled-by-admin" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none", "gzip" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filter": { "type": "string" }, "filterV2": { "oneOf": [ { "properties": { "version": { "type": "string", "enum": [ "v1" ] } }, "required": [ "version" ], "type": "object" }, { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "production", "preview" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } ] } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "enabled", "disabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "disabled-by-owner", "feature-not-available", "account-plan-downgrade", "disabled-by-admin" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none", "gzip" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filter": { "type": "string" }, "filterV2": { "oneOf": [ { "properties": { "version": { "type": "string", "enum": [ "v1" ] } }, "required": [ "version" ], "type": "object" }, { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "production", "preview" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } ] }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "integration", "drain" ] } }, "required": [ "access", "managedBy" ], "type": "object" }, { "properties": { "access": { "type": "string", "enum": [ "some" ] }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "managedBy": { "type": "string", "enum": [ "integration", "drain" ] } }, "required": [ "access", "managedBy", "projectIds" ], "type": "object" } ] } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "name", "projects", "schemas" ], "properties": { "name": { "type": "string" }, "projects": { "type": "string", "enum": [ "some", "all" ] }, "projectIds": { "type": "array", "items": { "type": "string" } }, "filter": { "oneOf": [ { "type": "string" }, { "type": "object", "additionalProperties": false, "required": [ "version", "filter" ], "properties": { "version": { "type": "string" }, "filter": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type" ], "properties": { "type": { "type": "string" }, "project": { "type": "object", "additionalProperties": false, "properties": { "ids": { "type": "array", "items": { "type": "string" } } } }, "log": { "type": "object", "additionalProperties": false, "properties": { "sources": { "type": "array", "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] } } } }, "deployment": { "type": "object", "additionalProperties": false, "properties": { "environments": { "type": "array", "items": { "type": "string", "enum": [ "production", "preview" ] } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "text" ], "properties": { "type": { "type": "string" }, "text": { "type": "string" } } } ] } } } ] }, "schemas": { "type": "object", "additionalProperties": { "type": "object", "required": [ "version" ], "properties": { "version": { "type": "string" } } } }, "delivery": { "type": "object", "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "endpoint", "encoding", "headers" ], "properties": { "type": { "type": "string" }, "endpoint": { "type": "string" }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "headers": { "type": "object", "additionalProperties": { "type": "string" } }, "secret": { "type": "string" } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "endpoint", "encoding", "headers" ], "properties": { "type": { "type": "string" }, "endpoint": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "traces" ], "properties": { "traces": { "type": "string" } } } ] }, "encoding": { "type": "string", "enum": [ "proto", "json" ] }, "headers": { "type": "object", "additionalProperties": { "type": "string" } }, "secret": { "type": "string" } } } ] }, "sampling": { "type": "array", "maxItems": 10, "items": { "type": "object", "additionalProperties": false, "required": [ "type", "rate" ], "properties": { "type": { "type": "string" }, "rate": { "type": "number", "minimum": 0, "maximum": 1, "description": "Sampling rate from 0 to 1 (e.g., 0.1 for 10%)" }, "env": { "type": "string", "enum": [ "production", "preview" ], "description": "Environment to apply sampling to" }, "requestPath": { "type": "string", "description": "Request path prefix to apply the sampling rule to" } } } }, "transforms": { "type": "array", "items": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string" } } } }, "source": { "type": "object", "oneOf": [ { "oneOf": [ { "properties": { "kind": { "type": "string", "default": "integration" }, "externalResourceId": { "type": "string" } }, "additionalProperties": false, "required": [ "externalResourceId" ] }, { "properties": { "kind": { "type": "string", "default": "integration" }, "resourceId": { "type": "string" } }, "additionalProperties": false, "required": [ "resourceId" ] }, { "properties": { "kind": { "type": "string", "default": "integration" } }, "additionalProperties": false, "required": [ "kind" ] } ] }, { "properties": { "kind": { "type": "string", "default": "self-served" } }, "additionalProperties": false, "required": [ "kind" ] } ] } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createDrain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.drains.createDrain({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "description": "Allows to retrieve the list of Drains of the authenticated team.", "operationId": "getDrains", "security": [ { "bearerToken": [] } ], "summary": "Retrieve a list of all Drains", "tags": [ "drains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "drains": { "oneOf": [ { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "enabled", "disabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "disabled-by-owner", "feature-not-available", "account-plan-downgrade", "disabled-by-admin" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none", "gzip" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filter": { "type": "string" }, "filterV2": { "oneOf": [ { "properties": { "version": { "type": "string", "enum": [ "v1" ] } }, "required": [ "version" ], "type": "object" }, { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "production", "preview" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } ] } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, "type": "array" }, { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "enabled", "disabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "disabled-by-owner", "feature-not-available", "account-plan-downgrade", "disabled-by-admin" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none", "gzip" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filter": { "type": "string" }, "filterV2": { "oneOf": [ { "properties": { "version": { "type": "string", "enum": [ "v1" ] } }, "required": [ "version" ], "type": "object" }, { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "production", "preview" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } ] }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "integration", "drain" ] } }, "required": [ "access", "managedBy" ], "type": "object" }, { "properties": { "access": { "type": "string", "enum": [ "some" ] }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "managedBy": { "type": "string", "enum": [ "integration", "drain" ] } }, "required": [ "access", "managedBy", "projectIds" ], "type": "object" } ] } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, "type": "array" } ] } }, "required": [ "drains" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "projectId", "in": "query", "schema": { "type": "string" } }, { "name": "includeMetadata", "in": "query", "schema": { "type": "boolean", "default": false } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getDrains", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.drains.getDrains({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/drains/{id}": { "delete": { "description": "Delete a specific Drain by passing the drain id in the URL.", "operationId": "deleteDrain", "security": [ { "bearerToken": [] } ], "summary": "Delete a drain", "tags": [ "drains" ], "responses": { "204": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteDrain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.drains.deleteDrain({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] }, "get": { "description": "Get the information for a specific Drain by passing the drain id in the URL.", "operationId": "getDrain", "security": [ { "bearerToken": [] } ], "summary": "Find a Drain by id", "tags": [ "drains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "enabled", "disabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "disabled-by-owner", "feature-not-available", "account-plan-downgrade", "disabled-by-admin" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none", "gzip" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filter": { "type": "string" }, "filterV2": { "oneOf": [ { "properties": { "version": { "type": "string", "enum": [ "v1" ] } }, "required": [ "version" ], "type": "object" }, { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "production", "preview" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } ] } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "enabled", "disabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "disabled-by-owner", "feature-not-available", "account-plan-downgrade", "disabled-by-admin" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none", "gzip" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filter": { "type": "string" }, "filterV2": { "oneOf": [ { "properties": { "version": { "type": "string", "enum": [ "v1" ] } }, "required": [ "version" ], "type": "object" }, { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "production", "preview" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } ] }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "integration", "drain" ] } }, "required": [ "access", "managedBy" ], "type": "object" }, { "properties": { "access": { "type": "string", "enum": [ "some" ] }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "managedBy": { "type": "string", "enum": [ "integration", "drain" ] } }, "required": [ "access", "managedBy", "projectIds" ], "type": "object" } ] } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getDrain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.drains.getDrain({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update the configuration of an existing drain.", "operationId": "updateDrain", "security": [ { "bearerToken": [] } ], "summary": "Update an existing Drain", "tags": [ "drains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "enabled", "disabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "disabled-by-owner", "feature-not-available", "account-plan-downgrade", "disabled-by-admin" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none", "gzip" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filter": { "type": "string" }, "filterV2": { "oneOf": [ { "properties": { "version": { "type": "string", "enum": [ "v1" ] } }, "required": [ "version" ], "type": "object" }, { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "production", "preview" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } ] } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "enabled", "disabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "disabled-by-owner", "feature-not-available", "account-plan-downgrade", "disabled-by-admin" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none", "gzip" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filter": { "type": "string" }, "filterV2": { "oneOf": [ { "properties": { "version": { "type": "string", "enum": [ "v1" ] } }, "required": [ "version" ], "type": "object" }, { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "production", "preview" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } ] }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "integration", "drain" ] } }, "required": [ "access", "managedBy" ], "type": "object" }, { "properties": { "access": { "type": "string", "enum": [ "some" ] }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "managedBy": { "type": "string", "enum": [ "integration", "drain" ] } }, "required": [ "access", "managedBy", "projectIds" ], "type": "object" } ] } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "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." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "projects": { "type": "string", "enum": [ "some", "all" ] }, "projectIds": { "type": "array", "items": { "type": "string" }, "nullable": true }, "filter": { "oneOf": [ { "type": "string", "nullable": true }, { "type": "object", "additionalProperties": false, "required": [ "version", "filter" ], "properties": { "version": { "type": "string" }, "filter": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type" ], "properties": { "type": { "type": "string" }, "project": { "type": "object", "additionalProperties": false, "properties": { "ids": { "type": "array", "items": { "type": "string" } } } }, "log": { "type": "object", "additionalProperties": false, "properties": { "sources": { "type": "array", "items": { "type": "string", "enum": [ "build", "edge", "lambda", "static", "external", "firewall", "redirect" ] } } } }, "deployment": { "type": "object", "additionalProperties": false, "properties": { "environments": { "type": "array", "items": { "type": "string", "enum": [ "production", "preview" ] } } } } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "text" ], "properties": { "type": { "type": "string" }, "text": { "type": "string" } } } ] } } } ] }, "schemas": { "type": "object", "additionalProperties": { "type": "object", "required": [ "version" ], "properties": { "version": { "type": "string" } } } }, "delivery": { "type": "object", "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "endpoint", "encoding", "headers" ], "properties": { "type": { "type": "string" }, "endpoint": { "type": "string" }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "headers": { "type": "object", "additionalProperties": { "type": "string" } }, "secret": { "type": "string" } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "endpoint", "encoding", "headers" ], "properties": { "type": { "type": "string" }, "endpoint": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "traces" ], "properties": { "traces": { "type": "string" } } } ] }, "encoding": { "type": "string", "enum": [ "proto", "json" ] }, "headers": { "type": "object", "additionalProperties": { "type": "string" } }, "secret": { "type": "string" } } } ] }, "sampling": { "type": "array", "maxItems": 10, "items": { "type": "object", "additionalProperties": false, "required": [ "type", "rate" ], "properties": { "type": { "type": "string" }, "rate": { "type": "number", "minimum": 0, "maximum": 1, "description": "Sampling rate from 0 to 1 (e.g., 0.1 for 10%)" }, "env": { "type": "string", "enum": [ "production", "preview" ], "description": "Environment to apply sampling to" }, "requestPath": { "type": "string", "description": "Request path prefix to apply the sampling rule to" } } }, "nullable": true }, "transforms": { "type": "array", "items": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string" } } }, "nullable": true }, "status": { "type": "string", "enum": [ "enabled", "disabled" ] }, "source": { "type": "object", "oneOf": [ { "oneOf": [ { "properties": { "kind": { "type": "string", "default": "integration" }, "externalResourceId": { "type": "string" } }, "additionalProperties": false, "required": [ "externalResourceId" ] }, { "properties": { "kind": { "type": "string", "default": "integration" }, "resourceId": { "type": "string" } }, "additionalProperties": false, "required": [ "resourceId" ] }, { "properties": { "kind": { "type": "string", "default": "integration" } }, "additionalProperties": false, "required": [ "kind" ] } ] }, { "properties": { "kind": { "type": "string", "default": "self-served" } }, "additionalProperties": false, "required": [ "kind" ] } ] } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateDrain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.drains.updateDrain({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/drains/test": { "post": { "description": "Validate the delivery configuration of a Drain using sample events.", "operationId": "testDrain", "security": [ { "bearerToken": [] } ], "summary": "Validate Drain delivery configuration", "tags": [ "drains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "status": { "type": "string" }, "error": { "type": "string" }, "endpoint": { "type": "string" } }, "required": [ "endpoint", "error", "status" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "schemas", "delivery" ], "properties": { "schemas": { "type": "object", "additionalProperties": { "type": "object", "required": [ "version" ], "properties": { "version": { "type": "string" } } } }, "delivery": { "type": "object", "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "type", "endpoint", "encoding", "headers" ], "properties": { "type": { "type": "string" }, "endpoint": { "type": "string" }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "headers": { "type": "object", "additionalProperties": { "type": "string" } }, "secret": { "type": "string" } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "endpoint", "encoding", "headers" ], "properties": { "type": { "type": "string" }, "endpoint": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "traces" ], "properties": { "traces": { "type": "string" } } } ] }, "encoding": { "type": "string", "enum": [ "proto", "json" ] }, "headers": { "type": "object", "additionalProperties": { "type": "string" } }, "secret": { "type": "string" } } } ] } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "testDrain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.drains.testDrain({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/edge-cache/invalidate-by-tags": { "post": { "description": "Marks a cache tag as stale, causing cache entries associated with that tag to be revalidated in the background on the next request.", "operationId": "invalidateByTags", "security": [ { "bearerToken": [] } ], "summary": "Invalidate by tag", "tags": [ "edge-cache" ], "responses": { "200": { "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": false, "type": "object", "required": [ "tags" ], "properties": { "tags": { "oneOf": [ { "items": { "maxLength": 256, "type": "string" }, "maxItems": 16, "minItems": 1, "type": "array" }, { "maxLength": 8196, "type": "string" } ] }, "target": { "enum": [ "production", "preview" ], "type": "string" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "invalidateByTags", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.edgeCache.invalidateByTags({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/edge-cache/dangerously-delete-by-tags": { "post": { "description": "Marks a cache tag as deleted, causing cache entries associated with that tag to be revalidated in the foreground on the next request. Use this method with caution because one tag can be associated with many paths and deleting the cache can cause many concurrent requests to the origin leading to cache stampede problem. This method is for advanced use cases and is not recommended; prefer using `invalidateByTag` instead.", "operationId": "dangerouslyDeleteByTags", "security": [ { "bearerToken": [] } ], "summary": "Dangerously delete by tag", "tags": [ "edge-cache" ], "responses": { "200": { "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": false, "type": "object", "required": [ "tags" ], "properties": { "revalidationDeadlineSeconds": { "minimum": 0, "type": "number" }, "tags": { "oneOf": [ { "items": { "maxLength": 256, "type": "string" }, "maxItems": 16, "minItems": 1, "type": "array" }, { "maxLength": 8196, "type": "string" } ] }, "target": { "enum": [ "production", "preview" ], "type": "string" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "dangerouslyDeleteByTags", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.edgeCache.dangerouslyDeleteByTags({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/edge-cache/invalidate-by-src-images": { "post": { "description": "Marks a source image as stale, causing its corresponding transformed images to be revalidated in the background on the next request.", "operationId": "invalidateBySrcImages", "security": [ { "bearerToken": [] } ], "summary": "Invalidate by source image", "tags": [ "edge-cache" ], "responses": { "200": { "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": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": false, "type": "object", "required": [ "srcImages" ], "properties": { "srcImages": { "items": { "maxLength": 8192, "type": "string" }, "maxItems": 8, "minItems": 1, "type": "array" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "invalidateBySrcImages", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.edgeCache.invalidateBySrcImages({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/edge-cache/dangerously-delete-by-src-images": { "post": { "description": "Marks a source image as deleted, causing cache entries associated with that source image to be revalidated in the foreground on the next request. Use this method with caution because one source image can be associated with many paths and deleting the cache can cause many concurrent requests to the origin leading to cache stampede problem. This method is for advanced use cases and is not recommended; prefer using `invalidateBySrcImage` instead.", "operationId": "dangerouslyDeleteBySrcImages", "security": [ { "bearerToken": [] } ], "summary": "Dangerously delete by source image", "tags": [ "edge-cache" ], "responses": { "200": { "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": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": false, "type": "object", "required": [ "srcImages" ], "properties": { "revalidationDeadlineSeconds": { "minimum": 0, "type": "number" }, "srcImages": { "items": { "maxLength": 8192, "type": "string" }, "maxItems": 8, "minItems": 1, "type": "array" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "dangerouslyDeleteBySrcImages", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.edgeCache.dangerouslyDeleteBySrcImages({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/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": { "type": "array", "description": "List of all edge configs.", "items": { "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" ] } } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getEdgeConfigs", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.getEdgeConfigs({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getEdgeConfigs", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.GetEdgeConfigs(ctx, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.ResponseBodies != nil {\n // handle response\n }\n}" } ] }, "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": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "type": "string", "description": "The ID of the user who created the Edge Config, optional because it is not always set." }, "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" }, "purpose": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "flags" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experimentation" ] }, "resourceId": { "type": "string" } }, "required": [ "resourceId", "type" ], "type": "object" } ] }, "deletedAt": { "nullable": true, "type": "number" }, "transfer": { "properties": { "fromAccountId": { "type": "string" }, "startedAt": { "type": "number" }, "doneAt": { "nullable": true, "type": "number" } }, "required": [ "doneAt", "fromAccountId", "startedAt" ], "type": "object", "description": "Keeps track of the current state of the Edge Config while it gets transferred." }, "schema": { "type": "object" }, "syncedToDynamoAt": { "type": "number", "description": "Timestamp of when the Edge Config was synced to DynamoDB initially. It is only set when syncing the entire Edge Config, not when updating." }, "sizeInBytes": { "type": "number" }, "itemCount": { "type": "number" } }, "required": [ "createdAt", "digest", "id", "itemCount", "ownerId", "sizeInBytes", "slug", "updatedAt" ], "type": "object", "description": "An Edge Config" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "slug" ], "properties": { "slug": { "maxLength": 64, "pattern": "^[\\w-]+$", "type": "string" }, "items": { "type": "object", "additionalProperties": {} } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "createEdgeConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.createEdgeConfig({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n slug: \"\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "createEdgeConfig", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.CreateEdgeConfig(ctx, nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "type": "string", "description": "The ID of the user who created the Edge Config, optional because it is not always set." }, "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" }, "purpose": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "flags" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experimentation" ] }, "resourceId": { "type": "string" } }, "required": [ "resourceId", "type" ], "type": "object" } ] }, "deletedAt": { "nullable": true, "type": "number" }, "transfer": { "properties": { "fromAccountId": { "type": "string" }, "startedAt": { "type": "number" }, "doneAt": { "nullable": true, "type": "number" } }, "required": [ "doneAt", "fromAccountId", "startedAt" ], "type": "object", "description": "Keeps track of the current state of the Edge Config while it gets transferred." }, "schema": { "type": "object" }, "syncedToDynamoAt": { "type": "number", "description": "Timestamp of when the Edge Config was synced to DynamoDB initially. It is only set when syncing the entire Edge Config, not when updating." }, "sizeInBytes": { "type": "number" }, "itemCount": { "type": "number" } }, "required": [ "createdAt", "digest", "id", "itemCount", "ownerId", "sizeInBytes", "slug", "updatedAt" ], "type": "object", "description": "The EdgeConfig." } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getEdgeConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.getEdgeConfig({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getEdgeConfig", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.GetEdgeConfig(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "type": "string", "description": "The ID of the user who created the Edge Config, optional because it is not always set." }, "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" }, "purpose": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "flags" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experimentation" ] }, "resourceId": { "type": "string" } }, "required": [ "resourceId", "type" ], "type": "object" } ] }, "deletedAt": { "nullable": true, "type": "number" }, "transfer": { "properties": { "fromAccountId": { "type": "string" }, "startedAt": { "type": "number" }, "doneAt": { "nullable": true, "type": "number" } }, "required": [ "doneAt", "fromAccountId", "startedAt" ], "type": "object", "description": "Keeps track of the current state of the Edge Config while it gets transferred." }, "schema": { "type": "object" }, "syncedToDynamoAt": { "type": "number", "description": "Timestamp of when the Edge Config was synced to DynamoDB initially. It is only set when syncing the entire Edge Config, not when updating." }, "sizeInBytes": { "type": "number" }, "itemCount": { "type": "number" } }, "required": [ "createdAt", "digest", "id", "itemCount", "ownerId", "sizeInBytes", "slug", "updatedAt" ], "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": "The request is not authorized." }, "402": { "description": "The 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" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "slug" ], "properties": { "slug": { "maxLength": 64, "pattern": "^[\\w-]+$", "type": "string" } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateEdgeConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.updateEdgeConfig({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n slug: \"\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "updateEdgeConfig", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.UpdateEdgeConfig(ctx, \"\", nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "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" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteEdgeConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.edgeConfig.deleteEdgeConfig({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "deleteEdgeConfig", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.DeleteEdgeConfig(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/v1/edge-config/{edgeConfigId}/items": { "get": { "description": "Returns all items of an Edge Config.", "operationId": "getEdgeConfigItems", "security": [ { "bearerToken": [] } ], "summary": "Get Edge Config items", "tags": [ "edge-config" ], "responses": { "200": { "description": "List of all Edge Config items.", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/EdgeConfigItem" }, "type": "array" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getEdgeConfigItems", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.getEdgeConfigItems({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getEdgeConfigItems", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.GetEdgeConfigItems(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.EdgeConfigItem != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "402": { "description": "The 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": "" }, "412": { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "operation": { "enum": [ "create", "update", "upsert", "delete" ] }, "key": { "maxLength": 256, "pattern": "^[\\w-]+$", "type": "string" }, "value": { "nullable": true }, "description": { "oneOf": [ { "type": "string", "maxLength": 512 }, {} ], "nullable": true } }, "anyOf": [ { "properties": { "operation": { "type": "string", "enum": [ "create" ] } }, "required": [ "operation", "key", "value" ] }, { "properties": { "operation": { "enum": [ "update", "upsert" ] } }, "required": [ "operation", "key", "value" ] }, { "properties": { "operation": { "enum": [ "update", "upsert" ] } }, "required": [ "operation", "key", "description" ] } ] } ] } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "patchEdgeConfigItems", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.patchEdgeConfigItems({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getEdgeConfigSchema", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.getEdgeConfigSchema({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getEdgeConfigSchema", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.GetEdgeConfigSchema(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "402": { "description": "The 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" } }, { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "definition" ], "properties": { "definition": {} } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "patchEdgeConfigSchema", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.patchEdgeConfigSchema({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n definition: \"\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "patchEdgeConfigSchema", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.PatchEdgeConfigSchema(ctx, operations.PatchEdgeConfigSchemaRequest{\n EdgeConfigID: \"\",\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "402": { "description": "The 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" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteEdgeConfigSchema", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.edgeConfig.deleteEdgeConfigSchema({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "deleteEdgeConfigSchema", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.DeleteEdgeConfigSchema(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getEdgeConfigItem", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.getEdgeConfigItem({\n edgeConfigId: \"\",\n edgeConfigItemKey: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getEdgeConfigItem", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.GetEdgeConfigItem(ctx, \"\", \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.EdgeConfigItem != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getEdgeConfigTokens", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.getEdgeConfigTokens({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getEdgeConfigTokens", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.GetEdgeConfigTokens(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.EdgeConfigToken != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "402": { "description": "The 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_" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "tokens": { "type": "array", "minItems": 1, "items": { "type": "string" } }, "ids": { "type": "array", "minItems": 1, "items": { "type": "string" } } }, "anyOf": [ { "required": [ "tokens" ] }, { "required": [ "ids" ] } ] } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "deleteEdgeConfigTokens", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.edgeConfig.deleteEdgeConfigTokens({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n tokens: [\n \"\",\n \"\",\n \"\",\n ],\n },\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "deleteEdgeConfigTokens", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.DeleteEdgeConfigTokens(ctx, \"\", nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getEdgeConfigToken", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.getEdgeConfigToken({\n edgeConfigId: \"\",\n token: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getEdgeConfigToken", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.GetEdgeConfigToken(ctx, \"\", \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.EdgeConfigToken != nil {\n // handle response\n }\n}" } ] } }, "/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": [ "id", "token" ], "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": "The request is not authorized." }, "402": { "description": "The 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_" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "label" ], "properties": { "label": { "maxLength": 52, "type": "string" } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "createEdgeConfigToken", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.createEdgeConfigToken({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n label: \"\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "createEdgeConfigToken", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.CreateEdgeConfigToken(ctx, \"\", nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/edge-config/{edgeConfigId}/backups/{edgeConfigBackupVersionId}": { "get": { "description": "Retrieves a specific version of an Edge Config from backup storage.", "operationId": "getEdgeConfigBackup", "security": [ { "bearerToken": [] } ], "summary": "Get Edge Config backup", "tags": [ "edge-config" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "id": { "type": "string" }, "lastModified": { "type": "number" }, "backup": { "properties": { "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" }, "items": { "additionalProperties": { "properties": { "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "value": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "description": { "type": "string" } }, "required": [ "createdAt", "updatedAt", "value" ], "type": "object" }, "type": "object" }, "digest": { "type": "string" } }, "required": [ "digest", "items", "slug", "updatedAt" ], "type": "object" }, "metadata": { "properties": { "updatedAt": { "type": "string" }, "updatedBy": { "type": "string" }, "itemsCount": { "type": "number" }, "itemsBytes": { "type": "number" } }, "type": "object" }, "user": { "properties": { "id": { "type": "string" }, "username": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" }, "avatar": { "type": "string" } }, "required": [ "email", "id", "username" ], "type": "object" } }, "required": [ "backup", "id", "lastModified", "metadata" ], "type": "object", "description": "The object the API responds with when requesting an Edge Config backup" }, { "properties": { "user": { "properties": { "id": { "type": "string" }, "username": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" }, "avatar": { "type": "string" } }, "required": [ "email", "id", "username" ], "type": "object" }, "id": { "type": "string" }, "lastModified": { "type": "number" }, "backup": { "properties": { "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" }, "items": { "additionalProperties": { "properties": { "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "value": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "description": { "type": "string" } }, "required": [ "createdAt", "updatedAt", "value" ], "type": "object" }, "type": "object" }, "digest": { "type": "string" } }, "required": [ "digest", "items", "slug", "updatedAt" ], "type": "object" }, "metadata": { "properties": { "updatedAt": { "type": "string" }, "updatedBy": { "type": "string" }, "itemsCount": { "type": "number" }, "itemsBytes": { "type": "number" } }, "type": "object" } }, "required": [ "backup", "id", "lastModified", "metadata", "user" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "edgeConfigId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "edgeConfigBackupVersionId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "getEdgeConfigBackup", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.getEdgeConfigBackup({\n edgeConfigId: \"\",\n edgeConfigBackupVersionId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getEdgeConfigBackup", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.GetEdgeConfigBackup(ctx, \"\", \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] } }, "/v1/edge-config/{edgeConfigId}/backups": { "get": { "description": "Returns backups of an Edge Config.", "operationId": "getEdgeConfigBackups", "security": [ { "bearerToken": [] } ], "summary": "Get Edge Config backups", "tags": [ "edge-config" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "backups": { "items": { "properties": { "metadata": { "properties": { "updatedAt": { "type": "string" }, "updatedBy": { "type": "string" }, "itemsCount": { "type": "number" }, "itemsBytes": { "type": "number" } }, "type": "object" }, "id": { "type": "string" }, "lastModified": { "type": "number" } }, "required": [ "id", "lastModified" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "hasNext": { "type": "boolean", "enum": [ false, true ] }, "next": { "type": "string" } }, "required": [ "hasNext" ], "type": "object" } }, "required": [ "backups", "pagination" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "edgeConfigId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "next", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "number", "minimum": 0, "maximum": 50 } }, { "name": "metadata", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getEdgeConfigBackups", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.edgeConfig.getEdgeConfigBackups({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getEdgeConfigBackups", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.EdgeConfig.GetEdgeConfigBackups(ctx, operations.GetEdgeConfigBackupsRequest{\n EdgeConfigID: \"\",\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/env": { "post": { "description": "Creates shared environment variable(s) for a team.", "operationId": "createSharedEnvVariable", "security": [ { "bearerToken": [] } ], "summary": "Create one or more shared environment variables", "tags": [ "environment" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "created": { "items": { "properties": { "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "value": { "type": "string", "description": "The value of the Shared Env Var." }, "projectId": { "items": { "type": "string" }, "type": "array", "description": "The unique identifiers of the projects which the Shared Env Var is linked to.", "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrasEFg" ] }, "type": { "type": "string", "enum": [ "encrypted", "sensitive", "system", "plain" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "target": { "items": { "type": "string", "enum": [ "production", "preview", "development" ], "example": "production", "description": "environments this env variable targets" }, "type": "array", "description": "environments this env variable targets", "example": "production" }, "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array", "description": "The custom environment IDs that this Shared Env Var is scoped to." }, "decrypted": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env variable is decrypted" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." } }, "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." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "evs" ], "anyOf": [ { "required": [ "target" ] }, { "required": [ "applyToAllCustomEnvironments" ] }, { "required": [ "customEnvironmentIds" ] } ], "properties": { "evs": { "type": "array", "maximum": 50, "minimum": 1, "items": { "type": "object", "required": [ "key", "value" ], "properties": { "key": { "description": "The name of the Shared Environment Variable", "type": "string", "example": "API_URL" }, "value": { "description": "The value of the Shared Environment Variable", "type": "string", "example": "https://api.vercel.com" }, "comment": { "type": "string", "description": "A comment to add context on what this Shared Environment Variable is for", "example": "database connection string for production", "maxLength": 500 } } } }, "type": { "description": "The type of environment variable", "type": "string", "enum": [ "encrypted", "sensitive" ], "example": "encrypted" }, "target": { "description": "The target environment of the Shared Environment Variable", "type": "array", "items": { "enum": [ "production", "preview", "development" ] }, "example": [ "production", "preview" ] }, "projectId": { "description": "Associate a Shared Environment Variable to projects.", "type": "array", "items": { "type": "string" }, "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrHRCRV" ], "deprecated": true } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createSharedEnvVariable", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.environment.createSharedEnvVariable({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n evs: [],\n type: \"encrypted\",\n target: [\n \"production\",\n \"preview\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "description": "Lists all Shared Environment Variables for a team, taking into account optional filters.", "operationId": "listSharedEnvVariable", "security": [ { "bearerToken": [] } ], "summary": "Lists all Shared Environment Variables for a team", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "data": { "items": { "properties": { "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "value": { "type": "string", "description": "The value of the Shared Env Var." }, "projectId": { "items": { "type": "string" }, "type": "array", "description": "The unique identifiers of the projects which the Shared Env Var is linked to.", "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrasEFg" ] }, "type": { "type": "string", "enum": [ "encrypted", "sensitive", "system", "plain" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "target": { "items": { "type": "string", "enum": [ "production", "preview", "development" ], "example": "production", "description": "environments this env variable targets" }, "type": "array", "description": "environments this env variable targets", "example": "production" }, "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array", "description": "The custom environment IDs that this Shared Env Var is scoped to." }, "decrypted": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env variable is decrypted" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." } }, "type": "object" }, "type": "array" }, "pagination": { "$ref": "#/components/schemas/Pagination" } }, "required": [ "data", "pagination" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "ls", "list" ] }, "parameters": [ { "name": "search", "in": "query", "schema": { "type": "string" } }, { "name": "projectId", "description": "Filter SharedEnvVariables that belong to a project", "in": "query", "schema": { "description": "Filter SharedEnvVariables that belong to a project", "type": "string", "example": "prj_2WjyKQmM8ZnGcJsPWMrHRHrE" } }, { "name": "ids", "description": "Filter SharedEnvVariables based on comma separated ids", "in": "query", "schema": { "description": "Filter SharedEnvVariables based on comma separated ids", "type": "string", "example": "env_2WjyKQmM8ZnGcJsPWMrHRHrE,env_2WjyKQmM8ZnGcJsPWMrHRCRV" } }, { "name": "exclude_ids", "description": "Filter SharedEnvVariables based on comma separated ids", "in": "query", "schema": { "description": "Filter SharedEnvVariables based on comma separated ids", "type": "string", "example": "env_2WjyKQmM8ZnGcJsPWMrHRHrE,env_2WjyKQmM8ZnGcJsPWMrHRCRV" } }, { "name": "'exclude-ids'", "description": "Filter SharedEnvVariables based on comma separated ids", "in": "query", "schema": { "description": "Filter SharedEnvVariables based on comma separated ids", "type": "string", "example": "env_2WjyKQmM8ZnGcJsPWMrHRHrE,env_2WjyKQmM8ZnGcJsPWMrHRCRV" } }, { "name": "exclude_projectId", "description": "Filter SharedEnvVariables that belong to a project", "in": "query", "schema": { "description": "Filter SharedEnvVariables that belong to a project", "type": "string", "example": "prj_2WjyKQmM8ZnGcJsPWMrHRHrE" } }, { "name": "'exclude-projectId'", "description": "Filter SharedEnvVariables that belong to a project", "in": "query", "schema": { "description": "Filter SharedEnvVariables that belong to a project", "type": "string", "example": "prj_2WjyKQmM8ZnGcJsPWMrHRHrE" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listSharedEnvVariable", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.environment.listSharedEnvVariable({\n projectId: \"prj_2WjyKQmM8ZnGcJsPWMrHRHrE\",\n ids: \"env_2WjyKQmM8ZnGcJsPWMrHRHrE,env_2WjyKQmM8ZnGcJsPWMrHRCRV\",\n excludeIdsQueryParameter: \"env_2WjyKQmM8ZnGcJsPWMrHRHrE,env_2WjyKQmM8ZnGcJsPWMrHRCRV\",\n excludeIdsQueryParameter1: \"env_2WjyKQmM8ZnGcJsPWMrHRHrE,env_2WjyKQmM8ZnGcJsPWMrHRCRV\",\n excludeProjectIdQueryParameter: \"prj_2WjyKQmM8ZnGcJsPWMrHRHrE\",\n excludeProjectIdQueryParameter1: \"prj_2WjyKQmM8ZnGcJsPWMrHRHrE\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Updates a given Shared Environment Variable for a Team.", "operationId": "updateSharedEnvVariable", "security": [ { "bearerToken": [] } ], "summary": "Updates one or more shared environment variables", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "updated": { "items": { "properties": { "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "value": { "type": "string", "description": "The value of the Shared Env Var." }, "projectId": { "items": { "type": "string" }, "type": "array", "description": "The unique identifiers of the projects which the Shared Env Var is linked to.", "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrasEFg" ] }, "type": { "type": "string", "enum": [ "encrypted", "sensitive", "system", "plain" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "target": { "items": { "type": "string", "enum": [ "production", "preview", "development" ], "example": "production", "description": "environments this env variable targets" }, "type": "array", "description": "environments this env variable targets", "example": "production" }, "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array", "description": "The custom environment IDs that this Shared Env Var is scoped to." }, "decrypted": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env variable is decrypted" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." } }, "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": [ "failed", "updated" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": false, "type": "object", "required": [ "updates" ], "properties": { "updates": { "description": "An object where each key is an environment variable ID (not the key name) and the value is the update to apply", "type": "object", "example": { "env_2WjyKQmM8ZnGcJsPWMrHRHrE": { "key": "API_URL", "value": "https://api.vercel.com", "target": [ "production", "preview" ], "projectIdUpdates": { "link": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE" ] } } }, "additionalProperties": { "type": "object", "additionalProperties": false, "properties": { "key": { "description": "The name of the Shared Environment Variable", "type": "string", "example": "API_URL" }, "value": { "description": "The value of the Shared Environment Variable", "type": "string", "example": "https://api.vercel.com" }, "target": { "description": "The target environment of the Shared Environment Variable", "type": "array", "items": { "enum": [ "production", "preview", "development" ] }, "example": [ "production", "preview" ] }, "projectId": { "description": "Associate a Shared Environment Variable to projects.", "type": "array", "items": { "type": "string" }, "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrHRCRV" ] }, "projectIdUpdates": { "description": "Incrementally update project linking without specifying the full list", "type": "object", "additionalProperties": false, "properties": { "link": { "description": "Project IDs to add to this environment variable", "type": "array", "items": { "type": "string" }, "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE" ] }, "unlink": { "description": "Project IDs to remove from this environment variable", "type": "array", "items": { "type": "string" }, "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRCRV" ] } } }, "type": { "description": "The new type of the Shared Environment Variable", "type": "string", "enum": [ "encrypted", "sensitive" ], "example": "encrypted" }, "comment": { "type": "string", "description": "A comment to add context on what this Shared Environment Variable is for", "example": "database connection string for production", "maxLength": 500 } } } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateSharedEnvVariable", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.environment.updateSharedEnvVariable({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n updates: {\n \"env_2WjyKQmM8ZnGcJsPWMrHRHrE\": {\n key: \"API_URL\",\n value: \"https://api.vercel.com\",\n target: [\n \"production\",\n \"preview\",\n ],\n projectIdUpdates: {\n link: [\n \"prj_2WjyKQmM8ZnGcJsPWMrHRHrE\",\n ],\n },\n },\n },\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Deletes one or many Shared Environment Variables for a given team.", "operationId": "deleteSharedEnvVariable", "security": [ { "bearerToken": [] } ], "summary": "Delete one or more Env Var", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "deleted": { "items": { "type": "string" }, "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": [ "deleted", "failed" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "ids" ], "properties": { "ids": { "description": "IDs of the Shared Environment Variables to delete", "minimum": 1, "maximum": 50, "type": "array", "items": { "type": "string" }, "example": [ "env_abc123", "env_abc124" ] } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "deleteSharedEnvVariable", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.environment.deleteSharedEnvVariable({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n ids: [\n \"env_abc123\",\n \"env_abc124\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/env/{id}": { "get": { "description": "Retrieve the decrypted value of a Shared Environment Variable by id.", "operationId": "getSharedEnvVar", "security": [ { "bearerToken": [] } ], "summary": "Retrieve the decrypted value of a Shared Environment Variable by id.", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "value": { "type": "string", "description": "The value of the Shared Env Var." }, "projectId": { "items": { "type": "string" }, "type": "array", "description": "The unique identifiers of the projects which the Shared Env Var is linked to.", "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrasEFg" ] }, "type": { "type": "string", "enum": [ "encrypted", "sensitive", "system", "plain" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "target": { "items": { "type": "string", "enum": [ "production", "preview", "development" ], "example": "production", "description": "environments this env variable targets" }, "type": "array", "description": "environments this env variable targets", "example": "production" }, "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array", "description": "The custom environment IDs that this Shared Env Var is scoped to." }, "decrypted": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env variable is decrypted" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." } }, "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "parameters": [ { "name": "id", "description": "The unique ID for the Shared Environment Variable to get the decrypted value.", "in": "path", "required": true, "schema": { "description": "The unique ID for the Shared Environment Variable to get the decrypted value.", "type": "string" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getSharedEnvVar", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.environment.getSharedEnvVar({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/env/{id}/unlink/{projectId}": { "patch": { "description": "Disconnects a shared environment variable for a given project", "operationId": "unlinkSharedEnvVariable", "security": [ { "bearerToken": [] } ], "summary": "Disconnects a shared environment variable for a given project", "tags": [ "environment" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "id", "description": "The unique ID for the Shared Environment Variable to unlink from the project.", "in": "path", "required": true, "schema": { "description": "The unique ID for the Shared Environment Variable to unlink from the project.", "type": "string" } }, { "name": "projectId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "unlinkSharedEnvVariable", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.environment.unlinkSharedEnvVariable({\n id: \"\",\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "events" ] }, "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": "Deprecated. Use `principalId` instead. If `principalId` and `userId` both exist, `principalId` will be used.", "in": "query", "schema": { "description": "Deprecated. Use `principalId` instead. If `principalId` and `userId` both exist, `principalId` will be used.", "example": "aeIInYVk59zbFF2SxfyxxmuO", "type": "string" } }, { "name": "principalId", "description": "When retrieving events for a Team, the `principalId` parameter may be specified to filter events generated by a specific principal.", "in": "query", "schema": { "description": "When retrieving events for a Team, the `principalId` parameter may be specified to filter events generated by a specific principal.", "example": "aeIInYVk59zbFF2SxfyxxmuO", "type": "string" } }, { "name": "projectIds", "description": "Comma-delimited list of project IDs to filter the results by.", "in": "query", "schema": { "description": "Comma-delimited list of project IDs to filter the results by.", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listUserEvents", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.user.listUserEvents({\n limit: 20,\n since: \"2019-12-08T10:00:38.976Z\",\n until: \"2019-12-09T23:00:38.976Z\",\n types: \"login,team-member-join,domain-buy\",\n userId: \"aeIInYVk59zbFF2SxfyxxmuO\",\n principalId: \"aeIInYVk59zbFF2SxfyxxmuO\",\n projectIds: \"aeIInYVk59zbFF2SxfyxxmuO\",\n withPayload: \"true\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "listUserEvents", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.User.ListUserEvents(ctx, operations.ListUserEventsRequest{\n Limit: vercel.Float64(20),\n Since: vercel.String(\"2019-12-08T10:00:38.976Z\"),\n Until: vercel.String(\"2019-12-09T23:00:38.976Z\"),\n Types: vercel.String(\"login,team-member-join,domain-buy\"),\n UserID: vercel.String(\"aeIInYVk59zbFF2SxfyxxmuO\"),\n WithPayload: vercel.String(\"true\"),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/events/types": { "get": { "description": "Returns the list of user-facing event types with descriptions.", "operationId": "listEventTypes", "security": [ { "bearerToken": [] } ], "summary": "List Event Types", "tags": [ "user" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListEventTypesResponse" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listEventTypes", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.user.listEventTypes({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{projectIdOrName}/feature-flags/flags": { "get": { "description": "Retrieve feature flags for a project. The list can be filtered by state and supports pagination.", "operationId": "listFlags", "security": [ { "bearerToken": [] } ], "summary": "List flags", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "data": { "items": { "$ref": "#/components/schemas/Flag" }, "type": "array" }, "pagination": { "properties": { "next": { "nullable": true, "type": "string" } }, "required": [ "next" ], "type": "object" } }, "required": [ "data", "pagination" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "name": "state", "description": "The state of the flags to retrieve. Defaults to `active`.", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "active", "archived" ], "description": "The state of the flags to retrieve. Defaults to `active`." } }, { "name": "withMetadata", "description": "Whether to include metadata in the response", "in": "query", "required": false, "schema": { "description": "Whether to include metadata in the response", "type": "boolean" } }, { "name": "limit", "description": "Maximum number of flags to return. When not set, all flags are returned.", "in": "query", "required": false, "schema": { "description": "Maximum number of flags to return. When not set, all flags are returned.", "type": "integer", "minimum": 1, "maximum": 100 } }, { "name": "cursor", "description": "Pagination cursor to continue from.", "in": "query", "required": false, "schema": { "description": "Pagination cursor to continue from.", "type": "string" } }, { "name": "search", "description": "Search flags by their slug or description. Case-insensitive.", "in": "query", "required": false, "schema": { "description": "Search flags by their slug or description. Case-insensitive.", "type": "string" } }, { "name": "tags", "description": "Filter flags by tag. Repeat the parameter for multiple tags (all must match).", "in": "query", "required": false, "schema": { "description": "Filter flags by tag. Repeat the parameter for multiple tags (all must match).", "type": "array", "items": { "type": "string" } } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listFlags", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.listFlags({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "put": { "description": "Create a new feature flag for a project. The flag must have a unique slug within the project and specify its kind (boolean, string, number, or json).", "operationId": "createFlag", "security": [ { "bearerToken": [] } ], "summary": "Create a flag", "tags": [ "feature-flags" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "description": { "type": "string" }, "maintainerIds": { "items": { "type": "string" }, "type": "array" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "experiment": { "properties": { "name": { "type": "string" }, "id": { "type": "string" }, "numVariants": { "type": "number" }, "surfaceArea": { "type": "string" }, "stickyRequirement": { "type": "boolean", "enum": [ false, true ] }, "layer": { "type": "string" }, "guardrailMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "percentage", "currency", "count" ] }, "metricUnit": { "type": "string", "enum": [ "user", "session", "visitor" ] }, "directionality": { "type": "string", "enum": [ "increaseIsGood", "decreaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "hypothesis": { "type": "string" }, "device": { "type": "string", "enum": [ "android", "ios", "desktop", "mweb" ] }, "controlVariantId": { "type": "string" }, "startedAt": { "type": "number" }, "endedAt": { "type": "number" }, "decision": { "type": "string" }, "decisionReason": { "type": "string" }, "duration": { "type": "number" }, "durationUnit": { "type": "string", "enum": [ "days", "exposures" ] }, "allocationPercent": { "type": "number" }, "allocationUnit": { "type": "string", "enum": [ "cookieId", "visitorId", "userId" ] }, "primaryMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "percentage", "currency", "count" ] }, "metricUnit": { "type": "string", "enum": [ "user", "session", "visitor" ] }, "directionality": { "type": "string", "enum": [ "increaseIsGood", "decreaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "status": { "type": "string", "enum": [ "draft", "running", "paused", "closed" ] } }, "required": [ "allocationUnit", "primaryMetrics", "status" ], "type": "object" }, "variants": { "items": { "type": "object" }, "type": "array" }, "id": { "type": "string" }, "environments": { "additionalProperties": { "properties": { "reuse": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "environment": { "type": "string" } }, "required": [ "active", "environment" ], "type": "object" }, "targets": { "additionalProperties": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "type": "object" }, "revision": { "type": "number" }, "pausedOutcome": { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, "fallthrough": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "active": { "type": "boolean", "enum": [ false, true ] }, "rules": { "items": { "properties": { "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "conditions": { "items": { "properties": { "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "type": { "type": "string", "enum": [ "list/inline", "list" ] }, "items": { "items": { "oneOf": [ { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ], "type": "object" }, { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "regex" ] }, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "cmp": { "type": "string", "enum": [ "eq", "!eq", "oneOf", "!oneOf", "containsAllOf", "containsAnyOf", "containsNoneOf", "startsWith", "!startsWith", "endsWith", "!endsWith", "contains", "!contains", "ex", "!ex", "gt", "gte", "lt", "lte", "regex", "!regex", "before", "after" ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" } }, "required": [ "active", "fallthrough", "pausedOutcome", "rules" ], "type": "object" }, "type": "object" }, "kind": { "type": "string", "enum": [ "string", "number", "boolean", "json" ] }, "revision": { "type": "number" }, "seed": { "type": "number" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "slug": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "createdBy": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "flag" ] } }, "required": [ "createdAt", "createdBy", "environments", "id", "kind", "ownerId", "projectId", "revision", "seed", "slug", "state", "typeName", "updatedAt", "variants" ], "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": "The request is not authorized." }, "402": { "description": "The 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": "" }, "412": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "slug": { "description": "A unique (per project) key for the flag, composed of letters, numbers, dashes, and underscores", "type": "string", "pattern": "^[a-zA-Z0-9_-]{1,512}$" }, "kind": { "description": "The kind of flag", "enum": [ "boolean", "string", "number", "json" ] }, "variants": { "type": "array", "description": "The variants of the flag", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The id of the variant", "type": "string" }, "label": { "description": "A label for the variant", "type": "string" }, "description": { "description": "A description of the variant", "type": "string" }, "value": { "anyOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "object" }, { "type": "array", "items": {} }, { "type": "string" } ] } }, "required": [ "id", "value" ] } }, "environments": { "type": "object", "description": "The configuration for the flag in different environments", "additionalProperties": { "type": "object", "additionalProperties": false, "properties": { "active": { "type": "boolean" }, "reuse": { "type": "object", "description": "Allows linking this environment to another environment so this flag will be evaluated with the other flag's configuration", "additionalProperties": false, "required": [ "active", "environment" ], "properties": { "active": { "type": "boolean", "description": "Whether the reuse is active or not" }, "environment": { "type": "string", "description": "The environment to link to" } } }, "targets": { "type": "object", "description": "Allows assigning targets to variants while bypassing the flag's rules", "additionalProperties": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ] }, "maxItems": 10000 } } } }, "pausedOutcome": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ] }, "rules": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string" }, "conditions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "lhs": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {} }, "required": [ "type" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] } ] }, "cmp": { "type": "string", "enum": [ "eq", "!eq", "oneOf", "!oneOf", "containsAllOf", "containsAnyOf", "containsNoneOf", "startsWith", "!startsWith", "endsWith", "!endsWith", "contains", "!contains", "ex", "!ex", "gt", "gte", "lt", "lte", "regex", "!regex", "before", "after" ] }, "rhs": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": [ "list/inline", "list" ] }, "items": { "type": "array", "items": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ] }, { "type": "object", "additionalProperties": false, "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ] } ] }, "maxItems": 10000 } }, "required": [ "type", "items" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "type", "pattern", "flags" ] }, { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] }, "cmpOptions": { "type": "object", "additionalProperties": false, "properties": { "ignoreCase": { "type": "boolean" } } } }, "required": [ "lhs", "cmp" ] } }, "outcome": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {}, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "weights": { "type": "object", "additionalProperties": { "type": "number" }, "description": "The distribution for each variant" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" } }, "required": [ "type", "base", "weights", "defaultVariantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "startTimestamp": { "type": "number", "description": "Epoch ms when the rollout begins" }, "rollFromVariantId": { "type": "string", "description": "The variant to roll away from" }, "rollToVariantId": { "type": "string", "description": "The variant to roll towards" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" }, "slots": { "type": "array", "description": "Each slot defines a promille and how long it is served for. After all slots expire, 100% is served indefinitely. The final implicit 100% slot does not need to be listed. Example: [[5_000, 21_600_000], [10_000, 28_800_000]] means 5‰ for 6h, then 10‰ for 8h, then 100% indefinitely.", "items": { "type": "object", "additionalProperties": false, "properties": { "promille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Promille of traffic for rollToVariant (0-100_000, where 1_000 = 1%)" }, "durationMs": { "type": "number", "minimum": 0, "description": "How long this promille is served in ms before moving to the next slot." } }, "required": [ "promille", "durationMs" ] }, "minItems": 1 } }, "required": [ "type", "base", "startTimestamp", "rollFromVariantId", "rollToVariantId", "defaultVariantId", "slots" ] } ] } }, "required": [ "id", "conditions", "outcome" ] }, "maxItems": 10000 }, "fallthrough": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {}, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "weights": { "type": "object", "additionalProperties": { "type": "number" }, "description": "The distribution for each variant" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" } }, "required": [ "type", "base", "weights", "defaultVariantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "startTimestamp": { "type": "number", "description": "Epoch ms when the rollout begins" }, "rollFromVariantId": { "type": "string", "description": "The variant to roll away from" }, "rollToVariantId": { "type": "string", "description": "The variant to roll towards" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" }, "slots": { "type": "array", "description": "Each slot defines a promille and how long it is served for. After all slots expire, 100% is served indefinitely. The final implicit 100% slot does not need to be listed. Example: [[5_000, 21_600_000], [10_000, 28_800_000]] means 5‰ for 6h, then 10‰ for 8h, then 100% indefinitely.", "items": { "type": "object", "additionalProperties": false, "properties": { "promille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Promille of traffic for rollToVariant (0-100_000, where 1_000 = 1%)" }, "durationMs": { "type": "number", "minimum": 0, "description": "How long this promille is served in ms before moving to the next slot." } }, "required": [ "promille", "durationMs" ] }, "minItems": 1 } }, "required": [ "type", "base", "startTimestamp", "rollFromVariantId", "rollToVariantId", "defaultVariantId", "slots" ] } ] }, "revision": { "type": "number", "description": "The revision of the environment config" } }, "required": [ "active", "pausedOutcome", "rules", "fallthrough" ] }, "maxProperties": 10 }, "seed": { "type": "number", "minimum": 0, "maximum": 100000, "description": "A random seed to prevent split points in different flags from having the same targets" }, "description": { "description": "A description of the flag", "type": "string" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "maintainerIds": { "description": "The user ids of the maintainers of the flag", "type": "array", "items": { "type": "string", "maxLength": 24 }, "maxItems": 5 }, "permanent": { "description": "Whether this flag is marked as permanent, indicating it should not be removed", "type": "boolean" }, "tags": { "description": "Tags for categorizing the flag", "type": "array", "items": { "type": "string", "maxLength": 64 }, "maxItems": 20, "uniqueItems": true } }, "required": [ "slug", "kind", "environments" ] } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createFlag", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.createFlag({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{projectIdOrName}/feature-flags/flags/{flagIdOrSlug}": { "get": { "description": "Retrieve a specific feature flag by its ID or slug.", "operationId": "getFlag", "security": [ { "bearerToken": [] } ], "summary": "Get a flag", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Flag" } } } }, "304": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "name": "flagIdOrSlug", "description": "The flag id or name", "in": "path", "required": true, "schema": { "description": "The flag id or name", "type": "string" } }, { "name": "ifMatch", "description": "Etag to match, can be used interchangeably with the `if-match` header", "in": "query", "required": false, "schema": { "description": "Etag to match, can be used interchangeably with the `if-match` header", "type": "string" } }, { "name": "withMetadata", "description": "Whether to include metadata in the response", "in": "query", "required": false, "schema": { "description": "Whether to include metadata in the response", "type": "boolean" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getFlag", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.getFlag({\n projectIdOrName: \"\",\n flagIdOrSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update an existing feature flag. This endpoint supports partial updates, allowing you to modify specific properties like variants, environments, or state without providing the full flag configuration.", "operationId": "updateFlag", "security": [ { "bearerToken": [] } ], "summary": "Update a flag", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "description": { "type": "string" }, "maintainerIds": { "items": { "type": "string" }, "type": "array" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "experiment": { "properties": { "name": { "type": "string" }, "id": { "type": "string" }, "numVariants": { "type": "number" }, "surfaceArea": { "type": "string" }, "stickyRequirement": { "type": "boolean", "enum": [ false, true ] }, "layer": { "type": "string" }, "guardrailMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "percentage", "currency", "count" ] }, "metricUnit": { "type": "string", "enum": [ "user", "session", "visitor" ] }, "directionality": { "type": "string", "enum": [ "increaseIsGood", "decreaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "hypothesis": { "type": "string" }, "device": { "type": "string", "enum": [ "android", "ios", "desktop", "mweb" ] }, "controlVariantId": { "type": "string" }, "startedAt": { "type": "number" }, "endedAt": { "type": "number" }, "decision": { "type": "string" }, "decisionReason": { "type": "string" }, "duration": { "type": "number" }, "durationUnit": { "type": "string", "enum": [ "days", "exposures" ] }, "allocationPercent": { "type": "number" }, "allocationUnit": { "type": "string", "enum": [ "cookieId", "visitorId", "userId" ] }, "primaryMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "percentage", "currency", "count" ] }, "metricUnit": { "type": "string", "enum": [ "user", "session", "visitor" ] }, "directionality": { "type": "string", "enum": [ "increaseIsGood", "decreaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "status": { "type": "string", "enum": [ "draft", "running", "paused", "closed" ] } }, "required": [ "allocationUnit", "primaryMetrics", "status" ], "type": "object" }, "variants": { "items": { "type": "object" }, "type": "array" }, "id": { "type": "string" }, "environments": { "additionalProperties": { "properties": { "reuse": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "environment": { "type": "string" } }, "required": [ "active", "environment" ], "type": "object" }, "targets": { "additionalProperties": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "type": "object" }, "revision": { "type": "number" }, "pausedOutcome": { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, "fallthrough": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "active": { "type": "boolean", "enum": [ false, true ] }, "rules": { "items": { "properties": { "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "conditions": { "items": { "properties": { "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "type": { "type": "string", "enum": [ "list/inline", "list" ] }, "items": { "items": { "oneOf": [ { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ], "type": "object" }, { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "regex" ] }, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "cmp": { "type": "string", "enum": [ "eq", "!eq", "oneOf", "!oneOf", "containsAllOf", "containsAnyOf", "containsNoneOf", "startsWith", "!startsWith", "endsWith", "!endsWith", "contains", "!contains", "ex", "!ex", "gt", "gte", "lt", "lte", "regex", "!regex", "before", "after" ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" } }, "required": [ "active", "fallthrough", "pausedOutcome", "rules" ], "type": "object" }, "type": "object" }, "kind": { "type": "string", "enum": [ "string", "number", "boolean", "json" ] }, "revision": { "type": "number" }, "seed": { "type": "number" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "slug": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "createdBy": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "flag" ] } }, "required": [ "createdAt", "createdBy", "environments", "id", "kind", "ownerId", "projectId", "revision", "seed", "slug", "state", "typeName", "updatedAt", "variants" ], "type": "object" }, { "$ref": "#/components/schemas/Flag" } ] } } } }, "304": { "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": "The request is not authorized." }, "402": { "description": "The 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": "" }, "412": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "name": "flagIdOrSlug", "description": "The flag id or name", "in": "path", "required": true, "schema": { "description": "The flag id or name", "type": "string" } }, { "name": "ifMatch", "description": "Etag to match, can be used interchangeably with the `if-match` header", "in": "query", "required": false, "schema": { "description": "Etag to match, can be used interchangeably with the `if-match` header", "type": "string" } }, { "name": "withMetadata", "description": "Whether to include metadata in the response", "in": "query", "required": false, "schema": { "description": "Whether to include metadata in the response", "type": "boolean" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "createdBy": { "description": "The user who created this patch", "type": "string" }, "message": { "description": "Additional message for this version", "type": "string" }, "variants": { "type": "array", "description": "The variants of the flag", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "description": "The id of the variant", "type": "string" }, "label": { "description": "A label for the variant", "type": "string" }, "description": { "description": "A description of the variant", "type": "string" }, "value": { "anyOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "object" }, { "type": "array", "items": {} }, { "type": "string" } ] } }, "required": [ "id", "value" ] } }, "environments": { "type": "object", "description": "The configuration for the flag in different environments", "additionalProperties": { "type": "object", "additionalProperties": false, "properties": { "active": { "type": "boolean" }, "reuse": { "type": "object", "description": "Allows linking this environment to another environment so this flag will be evaluated with the other flag's configuration", "additionalProperties": false, "required": [ "active", "environment" ], "properties": { "active": { "type": "boolean", "description": "Whether the reuse is active or not" }, "environment": { "type": "string", "description": "The environment to link to" } } }, "targets": { "type": "object", "description": "Allows assigning targets to variants while bypassing the flag's rules", "additionalProperties": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ] }, "maxItems": 10000 } } } }, "pausedOutcome": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ] }, "rules": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string" }, "conditions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "lhs": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {} }, "required": [ "type" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] } ] }, "cmp": { "type": "string", "enum": [ "eq", "!eq", "oneOf", "!oneOf", "containsAllOf", "containsAnyOf", "containsNoneOf", "startsWith", "!startsWith", "endsWith", "!endsWith", "contains", "!contains", "ex", "!ex", "gt", "gte", "lt", "lte", "regex", "!regex", "before", "after" ] }, "rhs": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": [ "list/inline", "list" ] }, "items": { "type": "array", "items": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ] }, { "type": "object", "additionalProperties": false, "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ] } ] }, "maxItems": 10000 } }, "required": [ "type", "items" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "type", "pattern", "flags" ] }, { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] }, "cmpOptions": { "type": "object", "additionalProperties": false, "properties": { "ignoreCase": { "type": "boolean" } } } }, "required": [ "lhs", "cmp" ] } }, "outcome": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {}, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "weights": { "type": "object", "additionalProperties": { "type": "number" }, "description": "The distribution for each variant" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" } }, "required": [ "type", "base", "weights", "defaultVariantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "startTimestamp": { "type": "number", "description": "Epoch ms when the rollout begins" }, "rollFromVariantId": { "type": "string", "description": "The variant to roll away from" }, "rollToVariantId": { "type": "string", "description": "The variant to roll towards" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" }, "slots": { "type": "array", "description": "Each slot defines a promille and how long it is served for. After all slots expire, 100% is served indefinitely. The final implicit 100% slot does not need to be listed. Example: [[5_000, 21_600_000], [10_000, 28_800_000]] means 5‰ for 6h, then 10‰ for 8h, then 100% indefinitely.", "items": { "type": "object", "additionalProperties": false, "properties": { "promille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Promille of traffic for rollToVariant (0-100_000, where 1_000 = 1%)" }, "durationMs": { "type": "number", "minimum": 0, "description": "How long this promille is served in ms before moving to the next slot." } }, "required": [ "promille", "durationMs" ] }, "minItems": 1 } }, "required": [ "type", "base", "startTimestamp", "rollFromVariantId", "rollToVariantId", "defaultVariantId", "slots" ] } ] } }, "required": [ "id", "conditions", "outcome" ] }, "maxItems": 10000 }, "fallthrough": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {}, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "weights": { "type": "object", "additionalProperties": { "type": "number" }, "description": "The distribution for each variant" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" } }, "required": [ "type", "base", "weights", "defaultVariantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "startTimestamp": { "type": "number", "description": "Epoch ms when the rollout begins" }, "rollFromVariantId": { "type": "string", "description": "The variant to roll away from" }, "rollToVariantId": { "type": "string", "description": "The variant to roll towards" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" }, "slots": { "type": "array", "description": "Each slot defines a promille and how long it is served for. After all slots expire, 100% is served indefinitely. The final implicit 100% slot does not need to be listed. Example: [[5_000, 21_600_000], [10_000, 28_800_000]] means 5‰ for 6h, then 10‰ for 8h, then 100% indefinitely.", "items": { "type": "object", "additionalProperties": false, "properties": { "promille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Promille of traffic for rollToVariant (0-100_000, where 1_000 = 1%)" }, "durationMs": { "type": "number", "minimum": 0, "description": "How long this promille is served in ms before moving to the next slot." } }, "required": [ "promille", "durationMs" ] }, "minItems": 1 } }, "required": [ "type", "base", "startTimestamp", "rollFromVariantId", "rollToVariantId", "defaultVariantId", "slots" ] } ] }, "revision": { "type": "number", "description": "The revision of the environment config" } }, "required": [ "active", "pausedOutcome", "rules", "fallthrough" ] }, "maxProperties": 10 }, "seed": { "type": "number", "minimum": 0, "maximum": 100000, "description": "A random seed to prevent split points in different flags from having the same targets" }, "description": { "description": "A description of the flag", "type": "string" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "maintainerIds": { "description": "The user ids of the maintainers of the flag", "type": "array", "items": { "type": "string", "maxLength": 24 }, "maxItems": 5 }, "permanent": { "description": "Whether this flag is marked as permanent, indicating it should not be removed", "type": "boolean" }, "tags": { "description": "Tags for categorizing the flag", "type": "array", "items": { "type": "string", "maxLength": 64 }, "maxItems": 20, "uniqueItems": true } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateFlag", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.updateFlag({\n projectIdOrName: \"\",\n flagIdOrSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Permanently delete a feature flag from the project. This action cannot be undone. Consider archiving the flag instead if you may need it in the future.", "operationId": "deleteFlag", "security": [ { "bearerToken": [] } ], "summary": "Delete a flag", "tags": [ "feature-flags" ], "responses": { "204": { "description": "" }, "304": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "" }, "412": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "name": "flagIdOrSlug", "description": "The flag id or name", "in": "path", "required": true, "schema": { "description": "The flag id or name", "type": "string" } }, { "name": "ifMatch", "description": "Etag to match, can be used interchangeably with the `if-match` header", "in": "query", "required": false, "schema": { "description": "Etag to match, can be used interchangeably with the `if-match` header", "type": "string" } }, { "name": "withMetadata", "description": "Whether to include metadata in the response", "in": "query", "required": false, "schema": { "description": "Whether to include metadata in the response", "type": "boolean" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteFlag", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.featureFlags.deleteFlag({\n projectIdOrName: \"\",\n flagIdOrSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/projects/{projectIdOrName}/feature-flags/flags/{flagIdOrSlug}/versions": { "get": { "description": "Lists flag versions for a given flag.", "operationId": "listFlagVersions", "security": [ { "bearerToken": [] } ], "summary": "List flag versions", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "versions": { "items": { "properties": { "createdBy": { "type": "string" }, "message": { "type": "string" }, "id": { "type": "string" }, "revision": { "type": "number" }, "createdAt": { "type": "number" }, "data": { "properties": { "description": { "type": "string" }, "maintainerIds": { "items": { "type": "string" }, "type": "array" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "experiment": { "properties": { "name": { "type": "string" }, "id": { "type": "string" }, "numVariants": { "type": "number" }, "surfaceArea": { "type": "string" }, "stickyRequirement": { "type": "boolean", "enum": [ false, true ] }, "layer": { "type": "string" }, "guardrailMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "percentage", "currency", "count" ] }, "metricUnit": { "type": "string", "enum": [ "user", "session", "visitor" ] }, "directionality": { "type": "string", "enum": [ "increaseIsGood", "decreaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "hypothesis": { "type": "string" }, "device": { "type": "string", "enum": [ "android", "ios", "desktop", "mweb" ] }, "controlVariantId": { "type": "string" }, "startedAt": { "type": "number" }, "endedAt": { "type": "number" }, "decision": { "type": "string" }, "decisionReason": { "type": "string" }, "duration": { "type": "number" }, "durationUnit": { "type": "string", "enum": [ "days", "exposures" ] }, "allocationPercent": { "type": "number" }, "allocationUnit": { "type": "string", "enum": [ "cookieId", "visitorId", "userId" ] }, "primaryMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "percentage", "currency", "count" ] }, "metricUnit": { "type": "string", "enum": [ "user", "session", "visitor" ] }, "directionality": { "type": "string", "enum": [ "increaseIsGood", "decreaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "status": { "type": "string", "enum": [ "draft", "running", "paused", "closed" ] } }, "required": [ "allocationUnit", "primaryMetrics", "status" ], "type": "object" }, "variants": { "items": { "type": "object" }, "type": "array" }, "environments": { "additionalProperties": { "properties": { "reuse": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "environment": { "type": "string" } }, "required": [ "active", "environment" ], "type": "object" }, "targets": { "additionalProperties": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "type": "object" }, "revision": { "type": "number" }, "pausedOutcome": { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, "fallthrough": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "active": { "type": "boolean", "enum": [ false, true ] }, "rules": { "items": { "properties": { "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "conditions": { "items": { "properties": { "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "type": { "type": "string", "enum": [ "list/inline", "list" ] }, "items": { "items": { "oneOf": [ { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ], "type": "object" }, { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "regex" ] }, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "cmp": { "type": "string", "enum": [ "eq", "!eq", "oneOf", "!oneOf", "containsAllOf", "containsAnyOf", "containsNoneOf", "startsWith", "!startsWith", "endsWith", "!endsWith", "contains", "!contains", "ex", "!ex", "gt", "gte", "lt", "lte", "regex", "!regex", "before", "after" ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" } }, "required": [ "active", "fallthrough", "pausedOutcome", "rules" ], "type": "object" }, "type": "object" }, "seed": { "type": "number" }, "state": { "type": "string", "enum": [ "active", "archived" ] } }, "required": [ "environments", "seed", "state", "variants" ], "type": "object" }, "flagId": { "type": "string" }, "changedEnvironments": { "items": { "type": "string" }, "type": "array" }, "metadata": { "properties": { "creator": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" } }, "type": "object" } }, "required": [ "changedEnvironments", "createdAt", "data", "flagId", "id", "revision" ], "type": "object" }, "type": "array" }, "pagination": { "type": "object" } }, "required": [ "pagination", "versions" ], "type": "object" } } } }, "304": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "projectIdOrName", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "flagIdOrSlug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "number", "minimum": 1, "maximum": 100, "default": 20 } }, { "name": "cursor", "description": "Pagination cursor", "in": "query", "required": false, "schema": { "type": "string", "description": "Pagination cursor" } }, { "name": "environment", "description": "Environment to filter by", "in": "query", "required": false, "schema": { "type": "string", "description": "Environment to filter by" } }, { "name": "withMetadata", "description": "Whether to include metadata", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to include metadata", "default": false } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listFlagVersions", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.listFlagVersions({\n projectIdOrName: \"\",\n flagIdOrSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{projectIdOrName}/feature-flags/settings": { "get": { "description": "Retrieve feature flag settings for a project.", "operationId": "getFlagSettings", "security": [ { "bearerToken": [] } ], "summary": "Get project flag settings", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "typeName": { "type": "string", "enum": [ "settings" ] }, "projectId": { "type": "string" }, "ownerId": { "type": "string" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "type": "string" }, "type": "array" }, "connections": { "items": { "properties": { "edgeConfigId": { "type": "string" }, "edgeConfigItemKey": { "type": "string" } }, "required": [ "edgeConfigId", "edgeConfigItemKey" ], "type": "object" }, "type": "array" }, "entities": { "items": { "properties": { "kind": { "type": "string" }, "label": { "type": "string" }, "attributes": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "segmentCount": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "packRevision": { "type": "number" }, "configUpdatedAt": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "type": "object", "description": "Syncs direct the synchronization of Flags to Edge Configs" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getFlagSettings", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.getFlagSettings({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update feature flag settings for a project.", "operationId": "updateFlagSettings", "security": [ { "bearerToken": [] } ], "summary": "Update project flag settings", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "typeName": { "type": "string", "enum": [ "settings" ] }, "projectId": { "type": "string" }, "ownerId": { "type": "string" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "type": "string" }, "type": "array" }, "connections": { "items": { "properties": { "edgeConfigId": { "type": "string" }, "edgeConfigItemKey": { "type": "string" } }, "required": [ "edgeConfigId", "edgeConfigItemKey" ], "type": "object" }, "type": "array" }, "entities": { "items": { "properties": { "kind": { "type": "string" }, "label": { "type": "string" }, "attributes": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "segmentCount": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "packRevision": { "type": "number" }, "configUpdatedAt": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "type": "object", "description": "Syncs direct the synchronization of Flags to Edge Configs" } } } }, "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "typeName": { "type": "string", "enum": [ "settings" ] }, "projectId": { "type": "string" }, "ownerId": { "type": "string" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "type": "string" }, "type": "array" }, "connections": { "items": { "properties": { "edgeConfigId": { "type": "string" }, "edgeConfigItemKey": { "type": "string" } }, "required": [ "edgeConfigId", "edgeConfigItemKey" ], "type": "object" }, "type": "array" }, "entities": { "items": { "properties": { "kind": { "type": "string" }, "label": { "type": "string" }, "attributes": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "segmentCount": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "packRevision": { "type": "number" }, "configUpdatedAt": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "type": "object", "description": "Syncs direct the synchronization of Flags to Edge Configs" } } } }, "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": "The request is not authorized." }, "402": { "description": "The 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": "" }, "412": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "enabled": { "type": "boolean" }, "entities": { "type": "array", "maxItems": 32, "items": { "type": "object", "additionalProperties": false, "required": [ "kind", "label", "attributes" ], "properties": { "kind": { "type": "string", "maxLength": 128 }, "label": { "type": "string", "maxLength": 128 }, "attributes": { "type": "array", "maxItems": 32, "items": { "type": "object", "additionalProperties": false, "required": [ "key", "type" ], "properties": { "key": { "type": "string", "maxLength": 128 }, "type": { "type": "string", "maxLength": 128 }, "labels": { "type": "array", "maxItems": 128, "items": { "type": "object", "additionalProperties": false, "required": [ "label", "value" ], "properties": { "label": { "type": "string", "maxLength": 128 }, "value": { "type": "string", "maxLength": 128 } } } } } } } } } }, "environments": { "description": "The environments to sync", "type": "array", "items": { "type": "string" } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateFlagSettings", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.updateFlagSettings({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/teams/{teamId}/feature-flags/settings": { "get": { "description": "Retrieve feature flag settings for projects in a team.", "operationId": "listTeamFlagSettings", "security": [ { "bearerToken": [] } ], "summary": "List team project flag settings", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "data": { "items": { "properties": { "typeName": { "type": "string", "enum": [ "settings" ] }, "projectId": { "type": "string" }, "ownerId": { "type": "string" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "type": "string" }, "type": "array" }, "connections": { "items": { "properties": { "edgeConfigId": { "type": "string" }, "edgeConfigItemKey": { "type": "string" } }, "required": [ "edgeConfigId", "edgeConfigItemKey" ], "type": "object" }, "type": "array" }, "entities": { "items": { "properties": { "kind": { "type": "string" }, "label": { "type": "string" }, "attributes": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "segmentCount": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "packRevision": { "type": "number" }, "configUpdatedAt": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "type": "object", "description": "Syncs direct the synchronization of Flags to Edge Configs" }, "type": "array" }, "pagination": { "properties": { "next": { "nullable": true, "type": "string" } }, "required": [ "next" ], "type": "object" } }, "required": [ "data", "pagination" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "limit", "description": "Maximum number of settings to return.", "in": "query", "required": false, "schema": { "description": "Maximum number of settings to return.", "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, { "name": "cursor", "description": "Pagination cursor to continue from.", "in": "query", "required": false, "schema": { "description": "Pagination cursor to continue from.", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "path", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": true }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listTeamFlagSettings", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.listTeamFlagSettings({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/teams/{teamId}/feature-flags/flags": { "get": { "description": "Retrieve all feature flags for a team across all projects. The list can be filtered by state and supports pagination.", "operationId": "listTeamFlags", "security": [ { "bearerToken": [] } ], "summary": "List all flags for a team", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "data": { "items": { "$ref": "#/components/schemas/Flag" }, "type": "array" }, "pagination": { "properties": { "next": { "nullable": true, "type": "string" } }, "required": [ "next" ], "type": "object" } }, "required": [ "data", "pagination" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "state", "description": "The state of the flags to retrieve. Defaults to `active`.", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "active", "archived" ], "description": "The state of the flags to retrieve. Defaults to `active`." } }, { "name": "withMetadata", "description": "Whether to include metadata in the response", "in": "query", "required": false, "schema": { "description": "Whether to include metadata in the response", "type": "boolean" } }, { "name": "limit", "description": "Maximum number of flags to return.", "in": "query", "required": false, "schema": { "description": "Maximum number of flags to return.", "type": "integer", "minimum": 1, "maximum": 100, "default": 20 } }, { "name": "cursor", "description": "Pagination cursor to continue from.", "in": "query", "required": false, "schema": { "description": "Pagination cursor to continue from.", "type": "string" } }, { "name": "search", "description": "Search flags by their slug or description. Case-insensitive.", "in": "query", "required": false, "schema": { "description": "Search flags by their slug or description. Case-insensitive.", "type": "string" } }, { "name": "kind", "description": "The kind of flags to retrieve.", "in": "query", "required": false, "schema": { "description": "The kind of flags to retrieve.", "type": "string", "enum": [ "boolean", "string", "number", "json" ] } }, { "name": "tags", "description": "Filter flags by tag. Repeat the parameter for multiple tags (all must match).", "in": "query", "required": false, "schema": { "description": "Filter flags by tag. Repeat the parameter for multiple tags (all must match).", "type": "array", "items": { "type": "string" } } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "path", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": true }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listTeamFlags", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.listTeamFlags({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{projectIdOrName}/feature-flags/segments": { "put": { "description": "Create a new feature flag segment.", "operationId": "createFlagSegment", "security": [ { "bearerToken": [] } ], "summary": "Create a segment", "tags": [ "feature-flags" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "description": { "type": "string" }, "createdBy": { "type": "string" }, "usedByFlags": { "items": { "type": "string" }, "type": "array" }, "usedBySegments": { "items": { "type": "string" }, "type": "array" }, "id": { "type": "string" }, "label": { "type": "string" }, "slug": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "segment" ] }, "data": { "properties": { "rules": { "items": { "properties": { "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "all" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "passPromille": { "type": "number" } }, "required": [ "base", "passPromille", "type" ], "type": "object" } ] }, "conditions": { "items": { "properties": { "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "type": { "type": "string", "enum": [ "list/inline", "list" ] }, "items": { "items": { "oneOf": [ { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ], "type": "object" }, { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "regex" ] }, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "cmp": { "type": "string", "enum": [ "eq", "!eq", "oneOf", "!oneOf", "containsAllOf", "containsAnyOf", "containsNoneOf", "startsWith", "!startsWith", "endsWith", "!endsWith", "contains", "!contains", "ex", "!ex", "gt", "gte", "lt", "lte", "regex", "!regex", "before", "after" ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" }, "include": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "exclude": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" } }, "type": "object" }, "hint": { "type": "string" } }, "required": [ "createdAt", "data", "hint", "id", "label", "projectId", "slug", "typeName", "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." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "" }, "412": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "slug": { "type": "string" }, "createdBy": { "description": "The entity who created the segment", "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "data": { "type": "object", "additionalProperties": false, "description": "The data of the segment", "properties": { "rules": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string" }, "conditions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "lhs": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {} }, "required": [ "type" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] } ] }, "cmp": { "type": "string", "enum": [ "eq", "!eq", "oneOf", "!oneOf", "containsAllOf", "containsAnyOf", "containsNoneOf", "startsWith", "!startsWith", "endsWith", "!endsWith", "contains", "!contains", "ex", "!ex", "gt", "gte", "lt", "lte", "regex", "!regex", "before", "after" ] }, "rhs": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": [ "list/inline", "list" ] }, "items": { "type": "array", "items": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ] }, { "type": "object", "additionalProperties": false, "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ] } ] }, "maxItems": 10000 } }, "required": [ "type", "items" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "type", "pattern", "flags" ] }, { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] }, "cmpOptions": { "type": "object", "additionalProperties": false, "properties": { "ignoreCase": { "type": "boolean" } } } }, "required": [ "lhs", "cmp" ] } }, "outcome": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {} }, "required": [ "type" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "passPromille": { "type": "number" } }, "required": [ "type", "base", "passPromille" ] } ] } }, "required": [ "conditions", "outcome", "id" ] }, "maxItems": 10000 }, "include": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ] }, "maxItems": 10000 } } }, "exclude": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ] }, "maxItems": 10000 } } } } }, "hint": { "type": "string" } }, "required": [ "slug", "label", "data", "hint" ] } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createFlagSegment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.createFlagSegment({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "description": "List all feature flag segments for a project.", "operationId": "listFlagSegments", "security": [ { "bearerToken": [] } ], "summary": "List segments", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "data": { "items": { "$ref": "#/components/schemas/Segment" }, "type": "array" } }, "required": [ "data" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "name": "withMetadata", "description": "Whether to include metadata", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to include metadata", "default": false } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listFlagSegments", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.listFlagSegments({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{projectIdOrName}/feature-flags/segments/{segmentIdOrSlug}": { "get": { "description": "Retrieve a feature flag segment by ID or slug.", "operationId": "getFlagSegment", "security": [ { "bearerToken": [] } ], "summary": "Get a segment", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Segment" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "name": "segmentIdOrSlug", "description": "The segment slug", "in": "path", "required": true, "schema": { "description": "The segment slug", "type": "string" } }, { "name": "withMetadata", "description": "Whether to include metadata", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to include metadata", "default": false } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getFlagSegment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.getFlagSegment({\n projectIdOrName: \"\",\n segmentIdOrSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Delete a feature flag segment.", "operationId": "deleteFlagSegment", "security": [ { "bearerToken": [] } ], "summary": "Delete a segment", "tags": [ "feature-flags" ], "responses": { "204": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "" }, "412": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "name": "segmentIdOrSlug", "description": "The segment slug", "in": "path", "required": true, "schema": { "description": "The segment slug", "type": "string" } }, { "name": "withMetadata", "description": "Whether to include metadata", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to include metadata", "default": false } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteFlagSegment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.featureFlags.deleteFlagSegment({\n projectIdOrName: \"\",\n segmentIdOrSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] }, "patch": { "description": "Update an existing feature flag segment.", "operationId": "updateFlagSegment", "security": [ { "bearerToken": [] } ], "summary": "Update a segment", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Segment" } } } }, "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": "The request is not authorized." }, "402": { "description": "The 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": "" }, "412": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "name": "segmentIdOrSlug", "description": "The segment slug", "in": "path", "required": true, "schema": { "description": "The segment slug", "type": "string" } }, { "name": "withMetadata", "description": "Whether to include metadata", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to include metadata", "default": false } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "operations": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "action": { "type": "string", "enum": [ "add", "remove" ] }, "field": { "type": "string", "enum": [ "include", "exclude" ] }, "entity": { "type": "string" }, "attribute": { "type": "string" }, "value": { "type": "object", "additionalProperties": false, "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ] } }, "required": [ "action", "field", "entity", "attribute", "value" ] } }, "label": { "type": "string" }, "description": { "type": "string" }, "data": { "type": "object", "additionalProperties": false, "description": "The data of the segment", "properties": { "rules": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string" }, "conditions": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "lhs": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {} }, "required": [ "type" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] } ] }, "cmp": { "type": "string", "enum": [ "eq", "!eq", "oneOf", "!oneOf", "containsAllOf", "containsAnyOf", "containsNoneOf", "startsWith", "!startsWith", "endsWith", "!endsWith", "contains", "!contains", "ex", "!ex", "gt", "gte", "lt", "lte", "regex", "!regex", "before", "after" ] }, "rhs": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": [ "list/inline", "list" ] }, "items": { "type": "array", "items": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ] }, { "type": "object", "additionalProperties": false, "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ] } ] }, "maxItems": 10000 } }, "required": [ "type", "items" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "type", "pattern", "flags" ] }, { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] }, "cmpOptions": { "type": "object", "additionalProperties": false, "properties": { "ignoreCase": { "type": "boolean" } } } }, "required": [ "lhs", "cmp" ] } }, "outcome": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {} }, "required": [ "type" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "passPromille": { "type": "number" } }, "required": [ "type", "base", "passPromille" ] } ] } }, "required": [ "conditions", "outcome", "id" ] }, "maxItems": 10000 }, "include": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ] }, "maxItems": 10000 } } }, "exclude": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ] }, "maxItems": 10000 } } } } }, "hint": { "type": "string" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateFlagSegment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.updateFlagSegment({\n projectIdOrName: \"\",\n segmentIdOrSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/deployments/{deploymentId}/feature-flags": { "get": { "description": "Retrieve the feature flags of a deployment.", "operationId": "getDeploymentFeatureFlags", "security": [ { "bearerToken": [] } ], "summary": "Retrieve the feature flags of a deployment", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "flags": { "items": { "type": "object" }, "type": "array" }, "status": { "nullable": true, "properties": { "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "responseStatus": { "type": "number", "description": "The HTTP status code from the flags discovery endpoint." }, "flagCount": { "type": "number", "description": "The number of flag definitions returned by the flags discovery endpoint." }, "createdAt": { "type": "number" } }, "required": [ "createdAt", "deploymentId", "flagCount", "projectId", "responseStatus" ], "type": "object" } }, "required": [ "flags", "status" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getDeploymentFeatureFlags", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.getDeploymentFeatureFlags({\n deploymentId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{projectIdOrName}/feature-flags/sdk-keys": { "get": { "description": "Gets all SDK keys for a project.", "operationId": "getSdkKeys", "security": [ { "bearerToken": [] } ], "summary": "Get all SDK keys", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "data": { "items": { "$ref": "#/components/schemas/FlagsSdkKey" }, "type": "array" } }, "required": [ "data" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getSdkKeys", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.getSDKKeys({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "put": { "description": "Creates an SDK key.", "operationId": "createSdkKey", "security": [ { "bearerToken": [] } ], "summary": "Create an SDK key", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlagsSdkKey" } } } }, "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": "The request is not authorized." }, "402": { "description": "The 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": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "description": "The project id or name", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "sdkKeyType", "environment" ], "properties": { "sdkKeyType": { "type": "string", "enum": [ "server", "mobile", "client" ] }, "environment": { "type": "string" }, "label": { "type": "string" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createSdkKey", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.createSDKKey({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{projectIdOrName}/feature-flags/sdk-keys/{hashKey}": { "delete": { "description": "Deletes an SDK key.", "operationId": "deleteSdkKey", "security": [ { "bearerToken": [] } ], "summary": "Delete an SDK key", "tags": [ "feature-flags" ], "responses": { "204": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "projectIdOrName", "description": "The project id or name", "in": "path", "required": true, "schema": { "type": "string", "description": "The project id or name" } }, { "name": "hashKey", "description": "The SDK key hash key to delete", "in": "path", "required": true, "schema": { "type": "string", "description": "The SDK key hash key to delete" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteSdkKey", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.featureFlags.deleteSDKKey({\n projectIdOrName: \"\",\n hashKey: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/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", "enum": [ false, true ] }, "installationId": { "type": "number" }, "requireReauth": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "id", "ownerType", "provider", "slug" ], "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": "" }, "429": { "description": "" }, "500": { "description": "" } }, "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-limited", "github-custom-host", "gitlab", "bitbucket" ] } } ], "x-codeSamples": [ { "lang": "typescript", "label": "gitNamespaces", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.integrations.gitNamespaces({\n host: \"ghes-test.now.systems\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "gitNamespaces", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Integrations.GitNamespaces(ctx, vercel.String(\"ghes-test.now.systems\"), nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.ResponseBodies != nil {\n // handle response\n }\n}" } ] } }, "/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-limited", "github-custom-host", "gitlab", "bitbucket", "vercel" ] }, "namespaceId": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, "required": [ "namespaceId", "provider" ], "type": "object" }, "repos": { "items": { "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "provider": { "type": "string", "enum": [ "github", "github-limited", "github-custom-host", "gitlab", "bitbucket", "vercel" ] }, "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", "enum": [ false, true ] }, "defaultBranch": { "type": "string" }, "updatedAt": { "type": "number" } }, "required": [ "defaultBranch", "id", "name", "namespace", "owner", "ownerType", "private", "provider", "slug", "updatedAt", "url" ], "type": "object" }, "type": "array" } }, "required": [ "gitAccount", "repos" ], "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": "" }, "429": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "query", "in": "query", "schema": { "type": "string" } }, { "name": "namespaceId", "in": "query", "schema": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "provider", "in": "query", "schema": { "enum": [ "github", "github-limited", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "searchRepo", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.integrations.searchRepo({\n host: \"ghes-test.now.systems\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "searchRepo", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Integrations.SearchRepo(ctx, operations.SearchRepoRequest{\n Host: vercel.String(\"ghes-test.now.systems\"),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] } }, "/v1/integrations/integration/{integrationIdOrSlug}/products/{productIdOrSlug}/plans": { "get": { "description": "Get a list of billing plans for an integration and product.", "operationId": "getBillingPlans", "security": [ { "bearerToken": [] } ], "summary": "List integration billing plans", "tags": [ "integrations" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "plans": { "items": { "properties": { "type": { "type": "string", "enum": [ "prepayment", "subscription" ] }, "id": { "type": "string" }, "name": { "type": "string" }, "scope": { "type": "string", "enum": [ "installation", "resource" ] }, "description": { "type": "string" }, "paymentMethodRequired": { "type": "boolean", "enum": [ false, true ] }, "preauthorizationAmount": { "type": "number" }, "initialCharge": { "type": "string" }, "minimumAmount": { "type": "string" }, "maximumAmount": { "type": "string" }, "maximumAmountAutoPurchasePerPeriod": { "type": "string" }, "cost": { "type": "string" }, "details": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "type": "object" }, "type": "array" }, "highlightedDetails": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "type": "object" }, "type": "array" }, "quote": { "items": { "properties": { "line": { "type": "string" }, "amount": { "type": "string" } }, "required": [ "amount", "line" ], "type": "object" }, "type": "array" }, "effectiveDate": { "type": "string" }, "disabled": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "description", "id", "name", "paymentMethodRequired", "scope", "type" ], "type": "object" }, "type": "array" } }, "required": [ "plans" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationIdOrSlug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "integrationConfigurationId", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "productIdOrSlug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "metadata", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "source", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "marketplace", "deploy-button", "external", "v0", "resource-claims", "cli", "oauth", "backoffice" ] } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getBillingPlans", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.integrations.getBillingPlans({\n integrationIdOrSlug: \"\",\n productIdOrSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/integrations/installations/{integrationConfigurationId}/resources/{resourceId}/connections": { "post": { "description": "Connects an integration resource to a Vercel project. This endpoint establishes a connection between a provisioned integration resource (from storage APIs like `POST /v1/storage/stores/integration/direct`) and a specific Vercel project.", "operationId": "connectIntegrationResourceToProject", "security": [ { "bearerToken": [] } ], "summary": "Connect integration resource to project", "tags": [ "integrations" ], "responses": { "201": { "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "projectId" ], "properties": { "projectId": { "type": "string" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "connectIntegrationResourceToProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.integrations.connectIntegrationResourceToProject({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}": { "patch": { "description": "This endpoint updates an integration installation.", "operationId": "update-installation", "security": [ { "bearerToken": [] } ], "summary": "Update Installation", "tags": [ "marketplace" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "ready", "pending", "onboarding", "suspended", "resumed", "uninstalled", "error" ] }, "externalId": { "type": "string" }, "billingPlan": { "type": "object", "required": [ "id", "type", "name" ], "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "prepayment", "subscription" ] }, "name": { "type": "string" }, "description": { "type": "string" }, "paymentMethodRequired": { "type": "boolean" }, "cost": { "type": "string" }, "details": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "additionalProperties": false } }, "highlightedDetails": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "additionalProperties": false } }, "effectiveDate": { "type": "string" } }, "additionalProperties": true }, "notification": { "oneOf": [ { "type": "object", "required": [ "level", "title" ], "properties": { "level": { "type": "string", "enum": [ "info", "warn", "error" ] }, "title": { "type": "string" }, "message": { "type": "string" }, "href": { "type": "string", "format": "uri" } } }, { "type": "string" } ], "description": "A notification to display to your customer. Send `null` to clear the current notification." } }, "additionalProperties": false } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "update-installation", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.marketplace.updateInstallation({\n integrationConfigurationId: \"\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/account": { "get": { "description": "Fetches the best account or user’s contact info", "operationId": "get-account-info", "security": [ { "bearerToken": [] } ], "summary": "Get Account Information", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "name": { "type": "string", "description": "The name of the team the installation is tied to." }, "url": { "type": "string", "description": "A URL linking to the installation in the Vercel Dashboard." }, "contact": { "nullable": true, "properties": { "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "email" ], "type": "object", "description": "The best contact for the integration, which can change as team members and their roles change." } }, "required": [ "contact", "url" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "get-account-info", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.getAccountInfo({\n integrationConfigurationId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/member/{memberId}": { "get": { "description": "Returns the member role and other information for a given member ID (\"user_id\" claim in the SSO OIDC token).", "operationId": "get-member", "security": [ { "bearerToken": [] } ], "summary": "Get Member Information", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "USER" ], "description": "\"The `ADMIN` role, by default, is provided to users capable of installing integrations, while the `USER` role can be granted to Vercel users with the Vercel `Billing` or Vercel `Viewer` role, which are considered to be Read-Only roles.\"" }, "globalUserId": { "type": "string" }, "userEmail": { "type": "string" } }, "required": [ "id", "role" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "memberId", "in": "path", "required": true, "schema": { "type": "string" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "get-member", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.getMember({\n integrationConfigurationId: \"\",\n memberId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/events": { "post": { "description": "Partner notifies Vercel of any changes made to an Installation or a Resource. Vercel is expected to use `list-resources` and other read APIs to get the new state.

`resource.updated` event should be dispatched when any state of a resource linked to Vercel is modified by the partner.
`installation.updated` event should be dispatched when an installation's billing plan is changed via the provider instead of Vercel.

Resource update use cases:

- The user renames a database in the partner’s application. The partner should dispatch a `resource.updated` event to notify Vercel to update the resource in Vercel’s datastores.
- A resource has been suspended due to a lack of use. The partner should dispatch a `resource.updated` event to notify Vercel to update the resource's status in Vercel's datastores.
", "operationId": "create-event", "security": [ { "bearerToken": [] } ], "summary": "Create Event", "tags": [ "marketplace" ], "responses": { "201": { "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "event" ], "properties": { "event": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "installation.updated" ] }, "billingPlanId": { "type": "string", "description": "The installation-level billing plan ID" } }, "required": [ "type" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "resource.updated" ] }, "productId": { "type": "string", "description": "Partner-provided product slug or id" }, "resourceId": { "type": "string", "description": "Partner provided resource ID" } }, "required": [ "type", "resourceId" ], "additionalProperties": false } ] } }, "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "create-event", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.marketplace.createEvent({\n integrationConfigurationId: \"\",\n requestBody: {\n event: {\n type: \"installation.updated\",\n },\n },\n });\n\n\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/resources": { "get": { "description": "Get all resources for a given installation ID.", "operationId": "get-integration-resources", "security": [ { "bearerToken": [] } ], "summary": "Get Integration Resources", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "resources": { "items": { "properties": { "partnerId": { "type": "string", "description": "The ID provided by the partner for the given resource" }, "internalId": { "type": "string", "description": "The ID assigned by Vercel for the given resource" }, "name": { "type": "string", "description": "The name of the resource as it is recorded in Vercel" }, "status": { "type": "string", "enum": [ "error", "ready", "pending", "onboarding", "suspended", "resumed", "uninstalled" ], "description": "The current status of the resource" }, "productId": { "type": "string", "description": "The ID of the product the resource is derived from" }, "protocolSettings": { "properties": { "experimentation": { "properties": { "edgeConfigSyncingEnabled": { "type": "boolean", "enum": [ false, true ] }, "edgeConfigId": { "type": "string" }, "edgeConfigTokenId": { "type": "string" } }, "type": "object" } }, "type": "object", "description": "Any settings provided for the resource to support its product's protocols" }, "notification": { "properties": { "level": { "type": "string", "enum": [ "error", "info", "warn" ] }, "title": { "type": "string" }, "message": { "type": "string" }, "href": { "type": "string" } }, "required": [ "level", "title" ], "type": "object", "description": "The notification, if set, displayed to the user when viewing the resource in Vercel" }, "billingPlanId": { "type": "string", "description": "The ID of the billing plan the resource is subscribed to, if applicable" }, "metadata": { "additionalProperties": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "items": { "type": "string" }, "type": "array", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" }, { "items": { "type": "number" }, "type": "array", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" }, { "type": "boolean", "enum": [ false, true ] } ] }, "type": "object", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" } }, "required": [ "internalId", "name", "partnerId", "productId" ], "type": "object" }, "type": "array" } }, "required": [ "resources" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "get-integration-resources", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.getIntegrationResources({\n integrationConfigurationId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/resources/{resourceId}": { "get": { "description": "Get a resource by its partner ID.", "operationId": "get-integration-resource", "security": [ { "bearerToken": [] } ], "summary": "Get Integration Resource", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string", "description": "The ID provided by the 3rd party provider for the given resource" }, "internalId": { "type": "string", "description": "The ID assigned by Vercel for the given resource" }, "name": { "type": "string", "description": "The name of the resource as it is recorded in Vercel" }, "status": { "type": "string", "enum": [ "error", "ready", "pending", "onboarding", "suspended", "resumed", "uninstalled" ], "description": "The current status of the resource" }, "productId": { "type": "string", "description": "The ID of the product the resource is derived from" }, "protocolSettings": { "properties": { "experimentation": { "properties": { "edgeConfigSyncingEnabled": { "type": "boolean", "enum": [ false, true ] }, "edgeConfigId": { "type": "string" }, "edgeConfigTokenId": { "type": "string" } }, "type": "object" } }, "type": "object", "description": "Any settings provided for the resource to support its product's protocols" }, "notification": { "properties": { "level": { "type": "string", "enum": [ "error", "info", "warn" ] }, "title": { "type": "string" }, "message": { "type": "string" }, "href": { "type": "string" } }, "required": [ "level", "title" ], "type": "object", "description": "The notification, if set, displayed to the user when viewing the resource in Vercel" }, "billingPlanId": { "type": "string", "description": "The ID of the billing plan the resource is subscribed to, if applicable" }, "metadata": { "additionalProperties": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "items": { "type": "string" }, "type": "array", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" }, { "items": { "type": "number" }, "type": "array", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" }, { "type": "boolean", "enum": [ false, true ] } ] }, "type": "object", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" } }, "required": [ "id", "internalId", "name", "productId" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "description": "The ID of the integration configuration (installation) the resource belongs to", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the integration configuration (installation) the resource belongs to" } }, { "name": "resourceId", "description": "The ID provided by the 3rd party provider for the given resource", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID provided by the 3rd party provider for the given resource" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "get-integration-resource", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.getIntegrationResource({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Delete a resource owned by the selected installation ID.", "operationId": "delete-integration-resource", "security": [ { "bearerToken": [] } ], "summary": "Delete Integration Resource", "tags": [ "marketplace" ], "responses": { "204": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "delete-integration-resource", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.marketplace.deleteIntegrationResource({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n });\n\n\n}\n\nrun();" } ] }, "put": { "description": "This endpoint imports (upserts) a resource to Vercel's installation. This may be needed if resources can be independently created on the partner's side and need to be synchronized to Vercel.", "operationId": "import-resource", "security": [ { "bearerToken": [] } ], "summary": "Import Resource", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "422": { "description": "" }, "429": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "productId", "name", "status" ], "properties": { "ownership": { "type": "string", "enum": [ "owned", "linked", "sandbox" ] }, "productId": { "type": "string" }, "name": { "type": "string" }, "status": { "type": "string", "enum": [ "ready", "pending", "onboarding", "suspended", "resumed", "uninstalled", "error" ] }, "metadata": { "type": "object", "additionalProperties": true }, "billingPlan": { "type": "object", "required": [ "id", "type", "name" ], "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "prepayment", "subscription" ] }, "name": { "type": "string" }, "description": { "type": "string" }, "paymentMethodRequired": { "type": "boolean" }, "cost": { "type": "string" }, "details": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "additionalProperties": false } }, "highlightedDetails": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "additionalProperties": false } }, "effectiveDate": { "type": "string" } }, "additionalProperties": true }, "notification": { "type": "object", "required": [ "level", "title" ], "properties": { "level": { "type": "string", "enum": [ "info", "warn", "error" ] }, "title": { "type": "string" }, "message": { "type": "string" }, "href": { "type": "string", "format": "uri" } } }, "extras": { "type": "object", "additionalProperties": true }, "secrets": { "type": "array", "items": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "prefix": { "type": "string" }, "environmentOverrides": { "type": "object", "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.", "properties": { "development": { "type": "string", "description": "Value used for development environment." }, "preview": { "type": "string", "description": "Value used for preview environment." }, "production": { "type": "string", "description": "Value used for production environment." } } } }, "additionalProperties": false } } }, "additionalProperties": false } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "import-resource", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.importResource({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "This endpoint updates an existing resource in the installation. All parameters are optional, allowing partial updates.", "operationId": "update-resource", "security": [ { "bearerToken": [] } ], "summary": "Update Resource", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "ownership": { "type": "string", "enum": [ "owned", "linked", "sandbox" ] }, "name": { "type": "string" }, "status": { "type": "string", "enum": [ "ready", "pending", "onboarding", "suspended", "resumed", "uninstalled", "error" ] }, "metadata": { "type": "object", "additionalProperties": true }, "billingPlan": { "type": "object", "required": [ "id", "type", "name" ], "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "prepayment", "subscription" ] }, "name": { "type": "string" }, "description": { "type": "string" }, "paymentMethodRequired": { "type": "boolean" }, "cost": { "type": "string" }, "details": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "additionalProperties": false } }, "highlightedDetails": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "additionalProperties": false } }, "effectiveDate": { "type": "string" } }, "additionalProperties": true }, "notification": { "oneOf": [ { "type": "object", "required": [ "level", "title" ], "properties": { "level": { "type": "string", "enum": [ "info", "warn", "error" ] }, "title": { "type": "string" }, "message": { "type": "string" }, "href": { "type": "string", "format": "uri" } } }, { "type": "string" } ] }, "extras": { "type": "object", "additionalProperties": true }, "secrets": { "oneOf": [ { "type": "array", "items": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "prefix": { "type": "string" }, "environmentOverrides": { "type": "object", "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.", "properties": { "development": { "type": "string", "description": "Value used for development environment." }, "preview": { "type": "string", "description": "Value used for preview environment." }, "production": { "type": "string", "description": "Value used for production environment." } } } }, "additionalProperties": false } }, { "type": "object", "required": [ "secrets" ], "properties": { "secrets": { "type": "array", "items": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "prefix": { "type": "string" }, "environmentOverrides": { "type": "object", "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.", "properties": { "development": { "type": "string", "description": "Value used for development environment." }, "preview": { "type": "string", "description": "Value used for preview environment." }, "production": { "type": "string", "description": "Value used for production environment." } } } }, "additionalProperties": false } }, "partial": { "type": "boolean", "description": "If true, will only overwrite the provided secrets instead of replacing all secrets." } }, "additionalProperties": false } ] } }, "additionalProperties": false } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "update-resource", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.updateResource({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/billing": { "post": { "description": "Sends the billing and usage data. The partner should do this at least once a day and ideally once per hour.
Use the `credentials.access_token` we provided in the [Upsert Installation](#upsert-installation) body to authorize this request.", "operationId": "submit-billing-data", "security": [ { "bearerToken": [] } ], "summary": "Submit Billing Data", "tags": [ "marketplace" ], "responses": { "201": { "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "timestamp": { "type": "string", "format": "date-time", "description": "Server time of your integration, used to determine the most recent data for race conditions & updates. Only the latest usage data for a given day, week, and month will be kept." }, "eod": { "type": "string", "format": "date-time", "description": "End of Day, the UTC datetime for when the end of the billing/usage day is in UTC time. This tells us which day the usage data is for, and also allows for your \"end of day\" to be different from UTC 00:00:00. eod must be within the period dates, and cannot be older than 24h earlier from our server's current time." }, "period": { "type": "object", "description": "Period for the billing cycle. The period end date cannot be older than 24 hours earlier than our current server's time.", "properties": { "start": { "type": "string", "format": "date-time" }, "end": { "type": "string", "format": "date-time" } }, "required": [ "start", "end" ], "additionalProperties": false }, "billing": { "description": "Billing data (interim invoicing data).", "oneOf": [ { "type": "array", "items": { "type": "object", "properties": { "billingPlanId": { "type": "string", "description": "Partner's billing plan ID." }, "resourceId": { "type": "string", "description": "Partner's resource ID." }, "start": { "type": "string", "format": "date-time", "description": "Start and end are only needed if different from the period's start/end." }, "end": { "type": "string", "format": "date-time", "description": "Start and end are only needed if different from the period's start/end." }, "name": { "type": "string", "description": "Line item name." }, "details": { "type": "string", "description": "Line item details." }, "price": { "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Price per unit." }, "quantity": { "type": "number", "description": "Quantity of units." }, "units": { "type": "string", "description": "Units of the quantity." }, "total": { "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Total amount." } }, "required": [ "billingPlanId", "name", "price", "quantity", "units", "total" ], "additionalProperties": false } }, { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "billingPlanId": { "type": "string", "description": "Partner's billing plan ID." }, "resourceId": { "type": "string", "description": "Partner's resource ID." }, "start": { "type": "string", "format": "date-time", "description": "Start and end are only needed if different from the period's start/end." }, "end": { "type": "string", "format": "date-time", "description": "Start and end are only needed if different from the period's start/end." }, "name": { "type": "string", "description": "Line item name." }, "details": { "type": "string", "description": "Line item details." }, "price": { "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Price per unit." }, "quantity": { "type": "number", "description": "Quantity of units." }, "units": { "type": "string", "description": "Units of the quantity." }, "total": { "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Total amount." } }, "required": [ "billingPlanId", "name", "price", "quantity", "units", "total" ], "additionalProperties": false } }, "discounts": { "type": "array", "items": { "type": "object", "properties": { "billingPlanId": { "type": "string", "description": "Partner's billing plan ID." }, "resourceId": { "type": "string", "description": "Partner's resource ID." }, "start": { "type": "string", "format": "date-time", "description": "Start and end are only needed if different from the period's start/end." }, "end": { "type": "string", "format": "date-time", "description": "Start and end are only needed if different from the period's start/end." }, "name": { "type": "string", "description": "Discount name." }, "details": { "type": "string", "description": "Discount details." }, "amount": { "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Discount amount." } }, "required": [ "billingPlanId", "name", "amount" ], "additionalProperties": false } } }, "required": [ "items" ] } ] }, "usage": { "type": "array", "items": { "type": "object", "properties": { "resourceId": { "type": "string", "description": "Partner's resource ID." }, "name": { "type": "string", "description": "Metric name." }, "type": { "type": "string", "description": "\n Type of the metric.\n - total: measured total value, such as Database size\n - interval: usage during the period, such as i/o or number of queries.\n - rate: rate of usage, such as queries per second.\n ", "enum": [ "total", "interval", "rate" ] }, "units": { "type": "string", "description": "Metric units. Example: \"GB\"" }, "dayValue": { "type": "number", "description": "Metric value for the day. Could be a final or an interim value for the day." }, "periodValue": { "type": "number", "description": "Metric value for the billing period. Could be a final or an interim value for the period." }, "planValue": { "type": "number", "description": "The limit value of the metric for a billing period, if a limit is defined by the plan." } }, "required": [ "name", "type", "units", "dayValue", "periodValue" ], "additionalProperties": false } } }, "required": [ "timestamp", "eod", "period", "billing", "usage" ], "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "submit-billing-data", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.marketplace.submitBillingData({\n integrationConfigurationId: \"\",\n requestBody: {\n timestamp: new Date(\"2023-11-26T05:03:03.977Z\"),\n eod: new Date(\"2023-04-14T04:58:49.647Z\"),\n period: {\n start: new Date(\"2023-03-12T13:32:00.895Z\"),\n end: new Date(\"2023-12-15T15:17:13.187Z\"),\n },\n billing: [\n {\n billingPlanId: \"\",\n name: \"\",\n price: \"694.00\",\n quantity: 228.64,\n units: \"\",\n total: \"\",\n },\n {\n billingPlanId: \"\",\n name: \"\",\n price: \"694.00\",\n quantity: 228.64,\n units: \"\",\n total: \"\",\n },\n ],\n usage: [\n {\n name: \"\",\n type: \"interval\",\n units: \"\",\n dayValue: 5212.43,\n periodValue: 4147.35,\n },\n {\n name: \"\",\n type: \"interval\",\n units: \"\",\n dayValue: 5212.43,\n periodValue: 4147.35,\n },\n {\n name: \"\",\n type: \"interval\",\n units: \"\",\n dayValue: 5212.43,\n periodValue: 4147.35,\n },\n ],\n },\n });\n\n\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/billing/invoices": { "post": { "description": "This endpoint allows the partner to submit an invoice to Vercel. The invoice is created in Vercel's billing system and sent to the customer. Depending on the type of billing plan, the invoice can be sent at a time of signup, at the start of the billing period, or at the end of the billing period.

Use the `credentials.access_token` we provided in the [Upsert Installation](#upsert-installation) body to authorize this request.
There are several limitations to the invoice submission:

1. A resource can only be billed once per the billing period and the billing plan.
2. The billing plan used to bill the resource must have been active for this resource during the billing period.
3. The billing plan used must be a subscription plan.
4. The interim usage data must be sent hourly for all types of subscriptions. See [Send subscription billing and usage data](#send-subscription-billing-and-usage-data) API on how to send interim billing and usage data.
", "operationId": "submit-invoice", "security": [ { "bearerToken": [] } ], "summary": "Submit Invoice", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "invoiceId": { "type": "string" }, "test": { "type": "boolean", "enum": [ false, true ] }, "validationErrors": { "items": { "type": "string" }, "type": "array" } }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "externalId": { "type": "string" }, "invoiceDate": { "type": "string", "format": "date-time", "description": "Invoice date. Must be within the period's start and end." }, "memo": { "type": "string", "description": "Additional memo for the invoice." }, "period": { "type": "object", "description": "Subscription period for this billing cycle.", "properties": { "start": { "type": "string", "format": "date-time" }, "end": { "type": "string", "format": "date-time" } }, "required": [ "start", "end" ], "additionalProperties": false }, "items": { "type": "array", "items": { "type": "object", "properties": { "resourceId": { "type": "string", "description": "Partner's resource ID." }, "billingPlanId": { "type": "string", "description": "Partner's billing plan ID." }, "start": { "type": "string", "format": "date-time", "description": "Start and end are only needed if different from the period's start/end." }, "end": { "type": "string", "format": "date-time", "description": "Start and end are only needed if different from the period's start/end." }, "name": { "type": "string" }, "details": { "type": "string" }, "price": { "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Currency amount as a decimal string." }, "quantity": { "type": "number" }, "units": { "type": "string" }, "total": { "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Currency amount as a decimal string." } }, "required": [ "billingPlanId", "name", "price", "quantity", "units", "total" ], "additionalProperties": false } }, "discounts": { "type": "array", "items": { "type": "object", "properties": { "resourceId": { "type": "string", "description": "Partner's resource ID." }, "billingPlanId": { "type": "string", "description": "Partner's billing plan ID." }, "start": { "type": "string", "format": "date-time", "description": "Start and end are only needed if different from the period's start/end." }, "end": { "type": "string", "format": "date-time", "description": "Start and end are only needed if different from the period's start/end." }, "name": { "type": "string" }, "details": { "type": "string" }, "amount": { "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Currency amount as a decimal string." } }, "required": [ "billingPlanId", "name", "amount" ], "additionalProperties": false } }, "final": { "type": "boolean", "description": "Set this to `true` if this is the final invoice for the installation. Can only be set when the installation is pending deletion." }, "test": { "type": "object", "description": "Test mode", "properties": { "validate": { "type": "boolean" }, "result": { "type": "string", "enum": [ "paid", "notpaid" ] } }, "additionalProperties": false } }, "required": [ "invoiceDate", "period", "items" ], "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "submit-invoice", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.submitInvoice({\n integrationConfigurationId: \"\",\n requestBody: {\n invoiceDate: new Date(\"2023-12-12T13:24:35.882Z\"),\n period: {\n start: new Date(\"2024-10-20T02:46:19.279Z\"),\n end: new Date(\"2025-06-06T21:30:28.107Z\"),\n },\n items: [\n {\n billingPlanId: \"\",\n name: \"\",\n price: \"469.29\",\n quantity: 3808.42,\n units: \"\",\n total: \"\",\n },\n {\n billingPlanId: \"\",\n name: \"\",\n price: \"469.29\",\n quantity: 3808.42,\n units: \"\",\n total: \"\",\n },\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/billing/finalize": { "post": { "description": "This endpoint allows the partner to mark an installation as finalized. This means you will not send any more invoices for the installation. Use this after a customer has requested uninstall and you have sent any remaining invoices. This will allow the uninstall process to proceed immediately after all invoices have been paid.
Use the `credentials.access_token` we provided in the [Upsert Installation](#upsert-installation) body to authorize this request.", "operationId": "finalize-installation", "security": [ { "bearerToken": [] } ], "summary": "Finalize Installation", "tags": [ "marketplace" ], "responses": { "204": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "finalize-installation", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.marketplace.finalizeInstallation({\n integrationConfigurationId: \"\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/billing/invoices/{invoiceId}": { "get": { "description": "Get Invoice details and status for a given invoice ID.

See [Billing Events with Webhooks documentation](https://vercel.com/docs/integrations/create-integration/marketplace-api#working-with-billing-events-through-webhooks) on how to receive invoice events. This endpoint is used to retrieve the invoice details.", "operationId": "get-invoice", "security": [ { "bearerToken": [] } ], "summary": "Get Invoice", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "test": { "type": "boolean", "enum": [ false, true ], "description": "Whether the invoice is in the testmode (no real transaction created)." }, "invoiceId": { "type": "string", "description": "Vercel Marketplace Invoice ID." }, "externalId": { "type": "string", "description": "Partner-supplied Invoice ID, if applicable." }, "state": { "type": "string", "enum": [ "pending", "draft", "scheduled", "invoiced", "paid", "notpaid", "overdue", "refund_requested", "refunded" ], "description": "Invoice state." }, "invoiceNumber": { "type": "string", "description": "User-readable invoice number." }, "invoiceDate": { "type": "string", "description": "Invoice date. ISO 8601 timestamp." }, "period": { "properties": { "start": { "type": "string" }, "end": { "type": "string" } }, "required": [ "end", "start" ], "type": "object", "description": "Subscription period for this billing cycle. ISO 8601 timestamps." }, "paidAt": { "type": "string", "description": "Moment the invoice was paid. ISO 8601 timestamp." }, "refundedAt": { "type": "string", "description": "Most recent moment the invoice was refunded. ISO 8601 timestamp." }, "memo": { "type": "string", "description": "Additional memo for the invoice." }, "items": { "items": { "properties": { "billingPlanId": { "type": "string", "description": "Partner's billing plan ID." }, "resourceId": { "type": "string", "description": "Partner's resource ID. If not specified, indicates installation-wide item." }, "start": { "type": "string", "description": "Start and end are only needed if different from the period's start/end. ISO 8601 timestamp." }, "end": { "type": "string", "description": "Start and end are only needed if different from the period's start/end. ISO 8601 timestamp." }, "name": { "type": "string", "description": "Invoice item name." }, "details": { "type": "string", "description": "Additional item details." }, "price": { "type": "string", "description": "Item price. A dollar-based decimal string." }, "quantity": { "type": "number", "description": "Item quantity." }, "units": { "type": "string", "description": "Units for item's quantity." }, "total": { "type": "string", "description": "Item total. A dollar-based decimal string." } }, "required": [ "billingPlanId", "name", "price", "quantity", "total", "units" ], "type": "object", "description": "Invoice items." }, "type": "array", "description": "Invoice items." }, "discounts": { "items": { "properties": { "billingPlanId": { "type": "string", "description": "Partner's billing plan ID." }, "resourceId": { "type": "string", "description": "Partner's resource ID. If not specified, indicates installation-wide discount." }, "start": { "type": "string", "description": "Start and end are only needed if different from the period's start/end. ISO 8601 timestamp." }, "end": { "type": "string", "description": "Start and end are only needed if different from the period's start/end. ISO 8601 timestamp." }, "name": { "type": "string", "description": "Discount name." }, "details": { "type": "string", "description": "Additional discount details." }, "amount": { "type": "string", "description": "Discount amount. A dollar-based decimal string." } }, "required": [ "amount", "billingPlanId", "name" ], "type": "object", "description": "Invoice discounts." }, "type": "array", "description": "Invoice discounts." }, "total": { "type": "string", "description": "Invoice total amount. A dollar-based decimal string." }, "refundReason": { "type": "string", "description": "The reason for refund. Only applicable for states \"refunded\" or \"refund_request\"." }, "refundTotal": { "type": "string", "description": "Refund amount. Only applicable for states \"refunded\" or \"refund_request\". A dollar-based decimal string." }, "created": { "type": "string", "description": "System creation date. ISO 8601 timestamp." }, "updated": { "type": "string", "description": "System update date. ISO 8601 timestamp." } }, "required": [ "created", "invoiceDate", "invoiceId", "items", "period", "state", "total", "updated" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "invoiceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "get-invoice", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.getInvoice({\n integrationConfigurationId: \"\",\n invoiceId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/billing/invoices/{invoiceId}/actions": { "post": { "description": "This endpoint allows the partner to request a refund for an invoice to Vercel. The invoice is created using the [Submit Invoice API](#submit-invoice-api).", "operationId": "update-invoice", "security": [ { "bearerToken": [] } ], "summary": "Invoice Actions", "tags": [ "marketplace" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "invoiceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "properties": { "action": { "type": "string", "enum": [ "refund" ] }, "reason": { "type": "string", "description": "Refund reason." }, "total": { "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "The total amount to be refunded. Must be less than or equal to the total amount of the invoice." } }, "required": [ "action", "reason", "total" ], "additionalProperties": false } ] } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "update-invoice", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.marketplace.updateInvoice({\n integrationConfigurationId: \"\",\n invoiceId: \"\",\n requestBody: {\n action: \"refund\",\n reason: \"\",\n total: \"\",\n },\n });\n\n\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/billing/balance": { "post": { "description": "Sends the prepayment balances. The partner should do this at least once a day and ideally once per hour.
Use the `credentials.access_token` we provided in the [Upsert Installation](#upsert-installation) body to authorize this request.", "operationId": "submit-prepayment-balances", "security": [ { "bearerToken": [] } ], "summary": "Submit Prepayment Balances", "tags": [ "marketplace" ], "responses": { "201": { "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "timestamp": { "type": "string", "format": "date-time", "description": "Server time of your integration, used to determine the most recent data for race conditions & updates. Only the latest usage data for a given day, week, and month will be kept." }, "balances": { "type": "array", "items": { "type": "object", "description": "A credit balance for a particular token type", "properties": { "resourceId": { "type": "string", "description": "Partner's resource ID, exclude if credits are tied to the installation and not an individual resource." }, "credit": { "type": "string", "description": "A human-readable description of the credits the user currently has, e.g. \"2,000 Tokens\"" }, "nameLabel": { "type": "string", "description": "The name of the credits, for display purposes, e.g. \"Tokens\"" }, "currencyValueInCents": { "type": "number", "description": "The dollar value of the credit balance, in USD and provided in cents, which is used to trigger automatic purchase thresholds." } }, "required": [ "currencyValueInCents" ], "additionalProperties": false } } }, "required": [ "timestamp", "balances" ], "additionalProperties": false } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "submit-prepayment-balances", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.marketplace.submitPrepaymentBalances({\n integrationConfigurationId: \"\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/products/{integrationProductIdOrSlug}/resources/{resourceId}/secrets": { "put": { "description": "This endpoint is deprecated and replaced with the endpoint [Update Resource Secrets](#update-resource-secrets).
This endpoint updates the secrets of a resource. If a resource has projects connected, the connected secrets are updated with the new secrets. The old secrets may still be used by existing connected projects because they are not automatically redeployed. Redeployment is a manual action and must be completed by the user. All new project connections will use the new secrets.

Use cases for this endpoint:

- Resetting the credentials of a database in the partner. If the user requests the credentials to be updated in the partner’s application, the partner post the new set of secrets to Vercel, the user should redeploy their application and the expire the old credentials.
", "operationId": "update-resource-secrets", "security": [ { "bearerToken": [] } ], "summary": "Deprecated: true. Update Resource Secrets (Deprecated)", "tags": [ "marketplace" ], "deprecated": true, "responses": { "201": { "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "integrationProductIdOrSlug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "secrets" ], "properties": { "secrets": { "type": "array", "items": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "prefix": { "type": "string" }, "environmentOverrides": { "type": "object", "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.", "properties": { "development": { "type": "string", "description": "Value used for development environment." }, "preview": { "type": "string", "description": "Value used for preview environment." }, "production": { "type": "string", "description": "Value used for production environment." } } } }, "additionalProperties": false } }, "partial": { "type": "boolean", "description": "If true, will only update the provided secrets" } }, "additionalProperties": false } } }, "required": true } } }, "/v1/installations/{integrationConfigurationId}/resources/{resourceId}/secrets": { "put": { "description": "This endpoint updates the secrets of a resource. If a resource has projects connected, the connected secrets are updated with the new secrets. The old secrets may still be used by existing connected projects because they are not automatically redeployed. Redeployment is a manual action and must be completed by the user. All new project connections will use the new secrets.

Use cases for this endpoint:

- Resetting the credentials of a database in the partner. If the user requests the credentials to be updated in the partner’s application, the partner post the new set of secrets to Vercel, the user should redeploy their application and the expire the old credentials.
", "operationId": "update-resource-secrets-by-id", "security": [ { "bearerToken": [] } ], "summary": "Update Resource Secrets", "tags": [ "marketplace" ], "responses": { "201": { "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "secrets" ], "properties": { "secrets": { "type": "array", "items": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "prefix": { "type": "string" }, "environmentOverrides": { "type": "object", "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.", "properties": { "development": { "type": "string", "description": "Value used for development environment." }, "preview": { "type": "string", "description": "Value used for preview environment." }, "production": { "type": "string", "description": "Value used for production environment." } } } }, "additionalProperties": false } }, "partial": { "type": "boolean", "description": "If true, will only overwrite the provided secrets instead of replacing all secrets." } }, "additionalProperties": false } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "update-resource-secrets-by-id", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.marketplace.updateResourceSecretsById({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/integrations/configurations": { "get": { "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" }, "status": { "type": "string", "enum": [ "error", "ready", "pending", "onboarding", "suspended", "resumed", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "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", "v0", "resource-claims", "cli", "oauth", "backoffice" ], "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", "example": "marketplace" }, "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" ] }, "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 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "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" ] }, "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'" } }, "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" }, "isLegacy": { "type": "boolean", "enum": [ false, true ] }, "flags": { "items": { "type": "string" }, "type": "array" }, "assignedBetaLabelAt": { "type": "number" }, "tagIds": { "items": { "type": "string", "enum": [ "tag_agents", "tag_ai", "tag_analytics", "tag_authentication", "tag_cms", "tag_code_repository", "tag_code_review", "tag_code_security", "tag_code_testing", "tag_commerce", "tag_databases", "tag_dev_tools", "tag_experimentation", "tag_flags", "tag_logging", "tag_messaging", "tag_monitoring", "tag_observability", "tag_payments", "tag_performance", "tag_productivity", "tag_searching", "tag_security", "tag_support_agent", "tag_testing", "tag_video", "tag_web_automation", "tag_workflow" ] }, "type": "array" } }, "required": [ "icon", "isLegacy", "name" ], "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" }, "status": { "type": "string", "enum": [ "error", "ready", "pending", "onboarding", "suspended", "resumed", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "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", "v0", "resource-claims", "cli", "oauth", "backoffice" ], "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", "example": "marketplace" }, "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" ] }, "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 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "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" ] }, "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'" } }, "required": [ "createdAt", "id", "integration", "integrationId", "ownerId", "scopes", "slug", "type", "updatedAt", "userId" ], "type": "object" }, "type": "array" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "view", "in": "query", "required": true, "schema": { "type": "string", "enum": [ "account", "project" ] } }, { "name": "installationType", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "marketplace", "external", "provisioning" ] } }, { "name": "integrationIdOrSlug", "description": "ID of the integration", "in": "query", "required": false, "schema": { "type": "string", "description": "ID of the integration" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "getConfigurations", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.integrations.getConfigurations({\n view: \"account\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getConfigurations", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Integrations.GetConfigurations(ctx, operations.GetConfigurationsRequest{\n View: operations.ViewAccount,\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] } }, "/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": { "projectSelection": { "type": "string", "enum": [ "selected", "all" ], "description": "A string representing the permission for projects. Possible values are `all` or `selected`.", "example": "all" }, "notification": { "properties": { "level": { "type": "string", "enum": [ "error", "info", "warn" ] }, "title": { "type": "string" }, "message": { "type": "string" }, "href": { "type": "string" } }, "required": [ "level", "title" ], "type": "object" }, "transferRequest": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "transfer-to-marketplace" ] }, "metadata": { "additionalProperties": true, "type": "object" }, "billingPlan": { "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "prepayment", "subscription" ] }, "scope": { "type": "string", "enum": [ "installation", "resource" ] }, "name": { "type": "string" }, "description": { "type": "string" }, "paymentMethodRequired": { "type": "boolean", "enum": [ false, true ] }, "preauthorizationAmount": { "type": "number" } }, "required": [ "description", "id", "name", "type" ], "type": "object" }, "requestId": { "type": "string" }, "transferId": { "type": "string" }, "requester": { "properties": { "name": { "type": "string" }, "email": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "createdAt": { "type": "number" }, "expiresAt": { "type": "number" }, "discardedAt": { "type": "number" }, "discardedBy": { "type": "string" }, "approvedAt": { "type": "number" }, "approvedBy": { "type": "string" }, "authorizationId": { "type": "string" } }, "required": [ "createdAt", "expiresAt", "kind", "requestId", "requester", "transferId" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "transfer-from-marketplace" ] }, "requestId": { "type": "string" }, "transferId": { "type": "string" }, "requester": { "properties": { "name": { "type": "string" }, "email": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "createdAt": { "type": "number" }, "expiresAt": { "type": "number" }, "discardedAt": { "type": "number" }, "discardedBy": { "type": "string" }, "approvedAt": { "type": "number" }, "approvedBy": { "type": "string" }, "authorizationId": { "type": "string" } }, "required": [ "createdAt", "expiresAt", "kind", "requestId", "requester", "transferId" ], "type": "object" } ] }, "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" ] }, "status": { "type": "string", "enum": [ "error", "ready", "pending", "onboarding", "suspended", "resumed", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "type": { "type": "string", "enum": [ "integration-configuration" ] }, "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" }, "userId": { "type": "string", "description": "The ID of the user that created the configuration.", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "ownerId": { "type": "string", "description": "The user or team ID that owns the configuration", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "createdAt": { "type": "number", "description": "A timestamp that tells you when the configuration was created", "example": 1558531915505 }, "updatedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was updated.", "example": 1558531915505 }, "deletedAt": { "nullable": true, "type": "number", "description": "A timestamp that tells you when the configuration was deleted.", "example": 1558531915505 }, "canConfigureOpenTelemetry": { "type": "boolean", "enum": [ false, true ] }, "completedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was installed successfully", "example": 1558531915505 }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "source": { "type": "string", "enum": [ "marketplace", "deploy-button", "external", "v0", "resource-claims", "cli", "oauth", "backoffice" ], "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", "example": "marketplace" }, "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" }, "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" ] }, "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 }, "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 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "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" ] }, "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'" } }, "required": [ "createdAt", "id", "integrationId", "notification", "ownerId", "projectSelection", "scopes", "slug", "transferRequest", "type", "updatedAt", "userId" ], "type": "object" }, { "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" }, "status": { "type": "string", "enum": [ "error", "ready", "pending", "onboarding", "suspended", "resumed", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "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", "v0", "resource-claims", "cli", "oauth", "backoffice" ], "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", "example": "marketplace" }, "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" ] }, "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 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "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" ] }, "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'" } }, "required": [ "createdAt", "id", "integrationId", "ownerId", "scopes", "slug", "type", "updatedAt", "userId" ], "type": "object", "description": "The configuration with the provided id" }, { "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" }, "status": { "type": "string", "enum": [ "error", "ready", "pending", "onboarding", "suspended", "resumed", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "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", "v0", "resource-claims", "cli", "oauth", "backoffice" ], "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", "example": "marketplace" }, "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" ] }, "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 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "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" ] }, "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'" } }, "type": "object", "description": "A configuration represents information about a single installation of an integration within an individual or team account" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getConfiguration", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.integrations.getConfiguration({\n id: \"icfg_cuwj0AdCdH3BwWT4LPijCC7t\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getConfiguration", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Integrations.GetConfiguration(ctx, \"icfg_cuwj0AdCdH3BwWT4LPijCC7t\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteConfiguration", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.integrations.deleteConfiguration({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "deleteConfiguration", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Integrations.DeleteConfiguration(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/v1/integrations/configuration/{id}/products": { "get": { "description": "Returns products available for an integration configuration. Each product includes a `metadataSchema` field with the JSON Schema for required and optional metadata fields.", "operationId": "getConfigurationProducts", "security": [ { "bearerToken": [] } ], "summary": "List products for integration configuration", "tags": [ "integrations" ], "responses": { "200": { "description": "List of products available for this integration configuration", "content": { "application/json": { "schema": { "properties": { "products": { "items": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "protocols": { "properties": { "storage": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] }, "repl": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "supportsReadOnlyMode": { "type": "boolean", "enum": [ false, true ] }, "welcomeMessage": { "type": "string" } }, "required": [ "enabled", "supportsReadOnlyMode" ], "type": "object" } }, "required": [ "status" ], "type": "object" }, "experimentation": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] }, "edgeConfigSyncingSupport": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "status" ], "type": "object" }, "ai": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "authentication": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "observability": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "video": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "workflow": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "checks": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "logDrain": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "format": { "type": "string", "enum": [ "json", "ndjson" ] } }, "required": [ "endpoint", "format", "status" ], "type": "object" }, "traceDrain": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "format": { "type": "string", "enum": [ "json", "proto" ] } }, "required": [ "endpoint", "format", "status" ], "type": "object" }, "messaging": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "other": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" } }, "type": "object" }, "primaryProtocol": { "type": "string", "enum": [ "checks", "experimentation", "ai", "authentication", "storage", "messaging", "observability", "video", "workflow", "logDrain", "traceDrain", "other" ] }, "metadataSchema": { "properties": { "type": { "type": "string", "enum": [ "object" ] }, "properties": { "additionalProperties": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "input" ] }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "number" ] }, "ui:control": { "type": "string", "enum": [ "input" ] }, "minimum": { "type": "number" }, "maximum": { "type": "number" }, "description": { "type": "string" }, "default": { "type": "number" }, "exclusiveMaximum": { "type": "number" }, "exclusiveMinimum": { "type": "number" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "boolean" ] }, "ui:control": { "type": "string", "enum": [ "toggle" ] }, "description": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "array" ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "number" ] }, "description": { "type": "string" }, "minimum": { "type": "number" }, "exclusiveMinimum": { "type": "number" }, "maximum": { "type": "number" }, "exclusiveMaximum": { "type": "number" }, "default": { "type": "number" } }, "required": [ "type" ], "type": "object" }, "ui:control": { "type": "string", "enum": [ "slider" ] }, "ui:steps": { "items": { "type": "number" }, "type": "array" }, "description": { "type": "string" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "default": { "items": { "type": "number" }, "type": "array" } }, "required": [ "items", "type", "ui:control", "ui:steps" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "select" ] }, "ui:options": { "items": { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "radio-button" ] }, "ui:options": { "items": { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "array" ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "description": { "type": "string" }, "minLength": { "type": "number" }, "maxLength": { "type": "number" }, "pattern": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object" }, "ui:control": { "type": "string", "enum": [ "multi-select" ] }, "ui:options": { "items": { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "description": { "type": "string" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "default": { "items": { "type": "string" }, "type": "array" }, "example": { "items": { "type": "string" }, "type": "array" } }, "required": [ "items", "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "vercel-region" ] }, "ui:options": { "items": { "oneOf": [ { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, { "type": "string" }, { "properties": { "value": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "array" ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "description": { "type": "string" }, "minLength": { "type": "number" }, "maxLength": { "type": "number" }, "pattern": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object" }, "ui:control": { "type": "string", "enum": [ "multi-vercel-region" ] }, "ui:options": { "items": { "oneOf": [ { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, { "type": "string" }, { "properties": { "value": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" }, "description": { "type": "string" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "default": { "items": { "type": "string" }, "type": "array" }, "example": { "items": { "type": "string" }, "type": "array" } }, "required": [ "items", "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "domain" ] }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "git-namespace" ] }, "description": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "git:providers": { "items": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "type": "array" } }, "required": [ "type", "ui:control" ], "type": "object" } ] }, "type": "object" }, "required": { "items": { "type": "string" }, "type": "array" }, "ui:order": { "items": { "type": "string" }, "type": "array" } }, "required": [ "properties", "type" ], "type": "object" } }, "required": [ "id", "metadataSchema", "name", "protocols", "slug" ], "type": "object" }, "type": "array" }, "integration": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object" }, "configuration": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "configuration", "integration", "products" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "id", "description": "ID of the integration configuration", "in": "path", "required": true, "schema": { "type": "string", "description": "ID of the integration configuration", "example": "icfg_cuwj0AdCdH3BwWT4LPijCC7t" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getConfigurationProducts", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.integrations.getConfigurationProducts({\n id: \"icfg_cuwj0AdCdH3BwWT4LPijCC7t\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/integrations/sso/token": { "post": { "description": "During the autorization process, Vercel sends the user to the provider [redirectLoginUrl](https://vercel.com/docs/integrations/create-integration/submit-integration#redirect-login-url), that includes the OAuth authorization `code` parameter. The provider then calls the SSO Token Exchange endpoint with the sent code and receives the OIDC token. They log the user in based on this token and redirects the user back to the Vercel account using deep-link parameters included the redirectLoginUrl. Providers should not persist the returned `id_token` in a database since the token will expire. See [**Authentication with SSO**](https://vercel.com/docs/integrations/create-integration/marketplace-api#authentication-with-sso) for more details.", "operationId": "exchange-sso-token", "security": [], "summary": "SSO Token Exchange", "tags": [ "authentication", "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "id_token": { "type": "string" }, "token_type": { "nullable": true, "type": "string" }, "expires_in": { "type": "number" }, "access_token": { "nullable": true, "type": "string" }, "refresh_token": { "type": "string" } }, "required": [ "access_token", "id_token", "token_type" ], "type": "object" }, { "properties": { "id_token": { "type": "string" }, "token_type": { "type": "string" }, "access_token": { "type": "string" }, "refresh_token": { "type": "string" }, "expires_in": { "type": "number" } }, "required": [ "access_token", "expires_in", "id_token", "refresh_token", "token_type" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "403": { "description": "" }, "500": { "description": "" } }, "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "required": [ "code", "client_id", "client_secret", "grant_type" ], "properties": { "code": { "type": "string", "description": "The sensitive code received from Vercel" }, "state": { "type": "string", "description": "The state received from the initialization request" }, "client_id": { "type": "string", "description": "The integration client id" }, "client_secret": { "type": "string", "description": "The integration client secret" }, "redirect_uri": { "type": "string", "description": "The integration redirect URI" }, "grant_type": { "type": "string", "description": "The grant type, when using x-www-form-urlencoded content type", "enum": [ "authorization_code" ] } } }, { "type": "object", "required": [ "refresh_token", "client_id", "client_secret", "grant_type" ], "properties": { "refresh_token": { "type": "string", "description": "The refresh token received from previous token exchange" }, "client_id": { "type": "string", "description": "The integration client id" }, "client_secret": { "type": "string", "description": "The integration client secret" }, "grant_type": { "type": "string", "description": "The grant type, when using x-www-form-urlencoded content type", "enum": [ "refresh_token" ] } } } ] } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "exchange-sso-token", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n const result = await vercel.authentication.exchangeSsoToken({\n code: \"\",\n clientId: \"\",\n clientSecret: \"\",\n grantType: \"authorization_code\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "typescript", "label": "exchange-sso-token", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n const result = await vercel.marketplace.exchangeSsoToken({\n code: \"\",\n clientId: \"\",\n clientSecret: \"\",\n grantType: \"authorization_code\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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 (deprecated)", "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_3bwCLgxL8qt5kjRLcv2Dit7F" }, "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", "protobuf" ], "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": [ "external", "build", "edge", "lambda", "static", "firewall", "redirect" ], "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": [ "integration", "self-served" ], "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 }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] } }, "required": [ "createdAt", "id", "name", "ownerId", "source", "url" ], "type": "object" }, "type": "array" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getIntegrationLogDrains", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.logDrains.getIntegrationLogDrains({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getIntegrationLogDrains", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.LogDrains.GetIntegrationLogDrains(ctx, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.ResponseBodies != nil {\n // handle response\n }\n}" } ] }, "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 (deprecated)", "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_3bwCLgxL8qt5kjRLcv2Dit7F" }, "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", "protobuf" ], "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": [ "external", "build", "edge", "lambda", "static", "firewall", "redirect" ], "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": [ "integration", "self-served" ], "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 }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] } }, "required": [ "createdAt", "id", "name", "ownerId", "source", "url" ], "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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" ] }, "url": { "description": "The url where you will receive logs. The protocol must be `https://` or `http://` when type is `json` and `ndjson`.", "example": "https://example.com/log-drain", "format": "uri", "pattern": "^https?://", "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" } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "createLogDrain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.logDrains.createLogDrain({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"My first log drain\",\n secret: \"a1Xsfd325fXcs\",\n deliveryFormat: \"json\",\n url: \"https://example.com/log-drain\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "createLogDrain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.LogDrains.CreateLogDrain(ctx, nil, nil, &operations.CreateLogDrainRequestBody{\n Name: \"My first log drain\",\n Secret: vercel.String(\"a1Xsfd325fXcs\"),\n DeliveryFormat: operations.DeliveryFormatJSON.ToPointer(),\n URL: \"https://example.com/log-drain\",\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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` (deprecated)", "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteIntegrationLogDrain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.logDrains.deleteIntegrationLogDrain({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "deleteIntegrationLogDrain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.LogDrains.DeleteIntegrationLogDrain(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/v1/projects/{projectId}/deployments/{deploymentId}/runtime-logs": { "get": { "description": "Returns a stream of logs for a given deployment.", "operationId": "getRuntimeLogs", "security": [ { "bearerToken": [] } ], "summary": "Get logs for a deployment", "tags": [ "logs" ], "responses": { "200": { "description": "", "content": { "application/stream+json": { "schema": { "properties": { "level": { "type": "string", "enum": [ "trace", "debug", "info", "warning", "error", "fatal" ] }, "message": { "type": "string" }, "rowId": { "type": "string" }, "source": { "type": "string", "enum": [ "delimiter", "edge-function", "edge-middleware", "serverless", "request" ] }, "timestampInMs": { "type": "number" }, "domain": { "type": "string" }, "messageTruncated": { "type": "boolean", "enum": [ false, true ] }, "requestMethod": { "type": "string" }, "requestPath": { "type": "string" }, "responseStatusCode": { "type": "number" } }, "required": [ "domain", "level", "message", "messageTruncated", "requestMethod", "requestPath", "responseStatusCode", "rowId", "source", "timestampInMs" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getRuntimeLogs", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.logs.getRuntimeLogs({\n projectId: \"\",\n deploymentId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/items": { "post": { "description": "Create one or multiple experimentation items", "operationId": "createInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationItems", "security": [ { "bearerToken": [] } ], "summary": "Create one or multiple experimentation items", "tags": [ "marketplace" ], "responses": { "204": { "description": "The items were created" }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "items" ], "properties": { "items": { "type": "array", "maxItems": 50, "items": { "type": "object", "additionalProperties": false, "required": [ "id", "slug", "origin" ], "properties": { "id": { "type": "string", "maxLength": 1024 }, "slug": { "type": "string", "maxLength": 1024 }, "origin": { "type": "string", "maxLength": 2048 }, "category": { "type": "string", "enum": [ "experiment", "flag" ] }, "name": { "type": "string", "maxLength": 1024 }, "description": { "type": "string", "maxLength": 1024 }, "isArchived": { "type": "boolean" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } } } } } } } } }, "x-speakeasy-name-override": "createInstallationIntegrationConfiguration", "x-codeSamples": [ { "lang": "typescript", "label": "createInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationItems", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.marketplace.createInstallationIntegrationConfiguration({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/items/{itemId}": { "patch": { "description": "Patch an existing experimentation item", "operationId": "updateInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationItemsByItemId", "security": [ { "bearerToken": [] } ], "summary": "Patch an existing experimentation item", "tags": [ "marketplace" ], "responses": { "204": { "description": "The item was updated" }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "itemId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "slug", "origin" ], "properties": { "slug": { "type": "string", "maxLength": 1024 }, "origin": { "type": "string", "maxLength": 2048 }, "name": { "type": "string", "maxLength": 1024 }, "category": { "type": "string", "enum": [ "experiment", "flag" ] }, "description": { "type": "string", "maxLength": 1024 }, "isArchived": { "type": "boolean" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } } } } } }, "x-speakeasy-name-override": "updateInstallationIntegrationConfiguration", "x-codeSamples": [ { "lang": "typescript", "label": "updateInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationItemsByItemId", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.marketplace.updateInstallationIntegrationConfiguration({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n itemId: \"\",\n });\n\n\n}\n\nrun();" } ] }, "delete": { "description": "Delete an existing experimentation item", "operationId": "deleteInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationItemsByItemId", "security": [ { "bearerToken": [] } ], "summary": "Delete an existing experimentation item", "tags": [ "marketplace" ], "responses": { "204": { "description": "The item was deleted" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "itemId", "in": "path", "required": true, "schema": { "type": "string" } } ], "x-speakeasy-name-override": "deleteInstallationIntegrationConfiguration", "x-codeSamples": [ { "lang": "typescript", "label": "deleteInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationItemsByItemId", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.marketplace.deleteInstallationIntegrationConfiguration({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n itemId: \"\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/edge-config": { "head": { "description": "When the user enabled Edge Config syncing, then this endpoint can be used by the partner to fetch the contents of the Edge Config.", "operationId": "headInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationEdgeConfig", "security": [ { "bearerToken": [] } ], "summary": "Get the data of a user-provided Edge Config", "tags": [ "marketplace" ], "responses": { "200": { "description": "The Edge Config data", "content": { "application/json": { "schema": { "properties": { "items": { "additionalProperties": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "type": "object" }, "updatedAt": { "type": "number" }, "digest": { "type": "string" }, "purpose": { "type": "string", "enum": [ "flags", "experimentation" ] } }, "required": [ "digest", "items", "updatedAt" ], "type": "object" } } } }, "304": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "x-speakeasy-name-override": "createInstallationIntegrationEdgeConfig", "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "headInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationEdgeConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.createInstallationIntegrationEdgeConfig({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "description": "When the user enabled Edge Config syncing, then this endpoint can be used by the partner to fetch the contents of the Edge Config.", "operationId": "getInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationEdgeConfig", "security": [ { "bearerToken": [] } ], "summary": "Get the data of a user-provided Edge Config", "tags": [ "marketplace" ], "responses": { "200": { "description": "The Edge Config data", "content": { "application/json": { "schema": { "properties": { "items": { "additionalProperties": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "type": "object" }, "updatedAt": { "type": "number" }, "digest": { "type": "string" }, "purpose": { "type": "string", "enum": [ "flags", "experimentation" ] } }, "required": [ "digest", "items", "updatedAt" ], "type": "object" } } } }, "304": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationEdgeConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.getInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationEdgeConfig({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "put": { "description": "When the user enabled Edge Config syncing, then this endpoint can be used by the partner to push their configuration data into the relevant Edge Config.", "operationId": "replaceInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationEdgeConfig", "security": [ { "bearerToken": [] } ], "summary": "Push data into a user-provided Edge Config", "tags": [ "marketplace" ], "responses": { "200": { "description": "The Edge Config was updated", "content": { "application/json": { "schema": { "properties": { "items": { "additionalProperties": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "type": "object" }, "updatedAt": { "type": "number" }, "digest": { "type": "string" }, "purpose": { "type": "string", "enum": [ "flags", "experimentation" ] } }, "required": [ "digest", "items", "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "412": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "data" ], "properties": { "data": { "type": "object", "additionalProperties": {} } } } } } }, "x-speakeasy-name-override": "updateInstallationIntegrationEdgeConfig", "x-codeSamples": [ { "lang": "typescript", "label": "replaceInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationEdgeConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.updateInstallationIntegrationEdgeConfig({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/microfrontends/groups": { "get": { "description": "Get the microfrontends group IDs for a team.", "operationId": "getMicrofrontendsGroups", "security": [ { "bearerToken": [] } ], "summary": "List microfrontends groups", "tags": [ "microfrontends" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "500": { "description": "" } }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getMicrofrontendsGroups", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.microfrontends.getMicrofrontendsGroups({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/microfrontends/groups/{groupId}/projects": { "get": { "description": "Get the microfrontends for a given group ID.", "operationId": "getMicrofrontendsInGroup", "security": [ { "bearerToken": [] } ], "summary": "List projects in a microfrontends group", "tags": [ "microfrontends" ], "responses": { "200": { "description": "", "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": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "production", "preview" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "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 * * *" }, "source": { "type": "string", "enum": [ "api" ], "description": "The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json)." }, "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "dataCache": { "properties": { "userDisabled": { "type": "boolean", "enum": [ false, true ] }, "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "delegatedProtection": { "nullable": true, "type": "object" }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "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 identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "customEnvironments": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "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, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "services", "node", "python", "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "ruby", "rust", "axum", "actix-web", "go", "mastra", null ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "jobs": { "properties": { "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "typecheck": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" } }, "type": "object" }, "latestDeployments": { "items": { "properties": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "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" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "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", "enum": [ false, true ] }, "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", "enum": [ false, true ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "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" }, "custom_environment_id": { "type": "string" }, "plan": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "pro", "enterprise", "hobby" ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyAt": { "type": "number" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED" ] }, "readySubstate": { "type": "string", "enum": [ "STAGED", "ROLLING", "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", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "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" }, "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "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-custom-host" ] }, "host": { "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "routeObservabilityToThisProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether observability data should be routed to this microfrontend project or a root project." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "enum": [ false, true ], "description": "Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "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" }, "passwordProtection": { "nullable": true, "type": "object" }, "productionDeploymentsFastLane": { "type": "boolean", "enum": [ false, true ] }, "publicSource": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard", "standard_legacy", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "enhanced", "turbo", "standard" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollbackDescription": { "properties": { "userId": { "type": "string", "description": "The user who rolled back the project." }, "username": { "type": "string", "description": "The username of the user who rolled back the project." }, "description": { "type": "string", "description": "User-supplied explanation of why they rolled back the project. Limited to 250 characters." }, "createdAt": { "type": "number", "description": "Timestamp of when the rollback was requested." } }, "required": [ "createdAt", "description", "userId", "username" ], "type": "object", "description": "Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback." }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "defaultResourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard", "standard_legacy", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "enhanced", "turbo", "standard" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "skewProtectionBoundaryAt": { "type": "number" }, "skewProtectionMaxAge": { "type": "number" }, "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "staticIps": { "properties": { "builds": { "type": "boolean", "enum": [ false, true ] }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "regions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "builds", "enabled", "regions" ], "type": "object" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] } }, "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", "enum": [ false, true ] } ] }, "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" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "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", "enum": [ false, true ] }, "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", "enum": [ false, true ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "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" }, "custom_environment_id": { "type": "string" }, "plan": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "pro", "enterprise", "hobby" ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyAt": { "type": "number" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED" ] }, "readySubstate": { "type": "string", "enum": [ "STAGED", "ROLLING", "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", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "enablePreviewFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "enableProductionFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "permissions": { "properties": { "oauth2Connection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organization": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "user": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userPreference": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAuthn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "accessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "agent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alerts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alertRules": { "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" }, "apiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyAiGateway": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oauth2Application": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallationRequest": { "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" }, "billingRefund": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingTaxId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blob": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blobStoreTokenSet": { "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" }, "ciInvocations": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciLogs": { "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" }, "connexClient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClientProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachineDefault": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheBillingSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "defaultDeploymentProtection": { "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" }, "drain": { "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" }, "endpointVerification": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "fileUpload": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "flagsExplorerSubscription": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "gitRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "imageOptimizationNewPrice": { "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" }, "integrationConfigurationProjects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationRole": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationDeploymentAction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResource": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceReplCommand": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceSecrets": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationSSOSession": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationVercelConfigurationOverride": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationPullRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ipBlocking": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "jobGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logDrain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceBillingData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationEdgeConfigData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInstallationMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "Monitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringChart": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringQuery": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationCustomerBudget": { "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" }, "notificationPreferences": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationStatementOfReasons": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationUsageAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityFunnel": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityNotebook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "openTelemetryEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ownEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtectionInvoiceItem": { "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" }, "postgresStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "previewDeploymentSuffix": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateCloudAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "proTrialOnboarding": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "rateLimit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redis": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redisStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "remoteCaching": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "repository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "samlConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "secret": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sensitiveEnvironmentVariablePolicy": { "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" }, "storeIsLocked": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTokenSetSensitive": { "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" }, "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" }, "teamInviteLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamJoin": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMemberMfaStatus": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMicrofrontends": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembershipDisconnectSAML": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamTokenInvalidation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "token": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "toolbarComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usageCycle": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vpcPeeringConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalyticsPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook-event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "bulkRedirects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachine": { "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" }, "deploymentBuildLogs": { "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" }, "deploymentV0": { "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" }, "edgeCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "environments": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "job": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logsPreset": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandBuild": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandConcurrency": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "optionsAllowlist": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateLinkEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "productionAliasProtectionBypass": { "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" }, "projectAnalyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheckRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDelegatedProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentExpiration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentHook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentProtectionStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEvent": { "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" }, "projectFlagsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFromV0": { "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" }, "projectOIDCToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectPermissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRollingRelease": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRoutes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTier": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferOut": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "pageIntegrity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "seawallConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityPlusConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "shareableLinkStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarConnection": { "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" }, "trustedSources": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "v0Chat": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" } }, "type": "object" }, "lastRollbackTarget": { "nullable": true, "type": "object" }, "lastAliasRequest": { "nullable": true, "properties": { "fromDeploymentId": { "nullable": true, "type": "string" }, "toDeploymentId": { "type": "string" }, "fromRollingReleaseId": { "type": "string", "description": "If rolling back from a rolling release, fromDeploymentId captures the \"base\" of that rolling release, and fromRollingReleaseId captures the \"target\" of that rolling release." }, "jobStatus": { "type": "string", "enum": [ "succeeded", "failed", "skipped", "pending", "in-progress" ] }, "requestedAt": { "type": "number" }, "type": { "type": "string", "enum": [ "promote", "rollback" ] } }, "required": [ "fromDeploymentId", "jobStatus", "requestedAt", "toDeploymentId", "type" ], "type": "object" }, "protectionBypass": { "additionalProperties": { "oneOf": [ { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "integration-automation-bypass" ] }, "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "createdAt", "createdBy", "integrationId", "scope" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "automation-bypass" ] }, "isEnvVar": { "type": "boolean", "enum": [ false, true ], "description": "When there was only one bypass, it was automatically set as an env var on deployments. With multiple bypasses, there is always one bypass that is selected as the default, and gets set as an env var on deployments. As this is a new field, undefined means that the bypass is the env var. If there are any automation bypasses, exactly one must be the env var." }, "note": { "type": "string", "description": "Optional note about the bypass to be displayed in the UI" } }, "required": [ "createdAt", "createdBy", "scope" ], "type": "object" } ] }, "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "trustedIps": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "addresses": { "items": { "properties": { "value": { "type": "string" }, "note": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "protectionMode": { "type": "string", "enum": [ "additional", "exclusive" ] } }, "required": [ "addresses", "deploymentType", "protectionMode" ], "type": "object" }, { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } }, "required": [ "deploymentType" ], "type": "object" } ] }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "enabled", "disabled" ], "description": "Whether the Vercel bot should automatically create GitHub deployments https://docs.github.com/en/rest/deployments/deployments#about-deployments NOTE: repository-dispatch events should be used instead" }, "disableRepositoryDispatchEvents": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should not automatically create GitHub repository-dispatch events on deployment events. https://vercel.com/docs/git/vercel-for-github#repository-dispatch-events" }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "concurrencyBucketName": { "type": "string" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "attackModeActiveUntil": { "nullable": true, "type": "number" }, "firewallConfigVersion": { "type": "number" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "challenge", "deny" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "challenge", "deny" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "challenge", "deny" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "challenge", "deny" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "team", "global" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "tier": { "type": "string" }, "flatRateTier": { "type": "string", "enum": [ "standard", "base", "advanced", "critical" ] }, "usageStatus": { "properties": { "kind": { "type": "string", "enum": [ "flat" ], "description": "Billing mode. Always 'flat' for flat-rate projects." }, "exceededAllowanceUntil": { "type": "number", "description": "Timestamp until which the project has exceeded its CDN allowance." }, "bypassThrottleUntil": { "type": "number", "description": "Timestamp until which throttling is bypassed (project pays list rates for overage)." } }, "required": [ "kind" ], "type": "object" }, "features": { "properties": { "webAnalytics": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "v0": { "type": "boolean", "enum": [ false, true ] }, "v0Created": { "type": "boolean", "enum": [ false, true ] }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" }, "hasDeployments": { "type": "boolean", "enum": [ false, true ] }, "dismissedToasts": { "items": { "properties": { "key": { "type": "string" }, "dismissedAt": { "type": "number" }, "action": { "type": "string", "enum": [ "delete", "cancel", "accept" ] }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "previousValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "currentValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "currentValue", "previousValue" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "action", "dismissedAt", "key", "value" ], "type": "object" }, "type": "array" }, "protectedSourcemaps": { "type": "boolean", "enum": [ false, true ] }, "tracing": { "properties": { "domains": { "type": "string" }, "ignorePaths": { "items": { "type": "string" }, "type": "array" }, "samplingRules": { "items": { "properties": { "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate" ], "type": "object" }, "type": "array" } }, "type": "object" } }, "required": [ "accountId", "defaultResourceConfig", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig" ], "type": "object" }, "type": "array" } }, "required": [ "projects" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "groupId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getMicrofrontendsInGroup", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.microfrontends.getMicrofrontendsInGroup({\n groupId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/microfrontends/{deploymentId}/config": { "get": { "description": "Get the microfrontends config for a deployment.", "operationId": "getMicrofrontendsConfig", "security": [ { "bearerToken": [] } ], "summary": "Get microfrontends config for a deployment", "tags": [ "microfrontends" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "config": { "nullable": true, "properties": { "$schema": { "type": "string", "description": "See https://openapi.vercel.sh/microfrontends.json." }, "version": { "type": "string", "enum": [ "1" ], "description": "The version of the microfrontends config schema." }, "applications": { "additionalProperties": { "oneOf": [ { "properties": { "development": { "properties": { "fallback": { "type": "string", "description": "Fallback for local development, could point to any environment. This is required for the default app. This value is used as the fallback for child apps as well if they do not have a fallback. If passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTPS. If omitted, the port defaults to `80` for HTTP and `443` for HTTPS. See https://vercel.com/docs/microfrontends/local-development." }, "local": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "task": { "type": "string", "description": "The task to run when starting the development server. Should reference a script in the package.json of the application. The default value is \"dev\". See https://vercel.com/docs/microfrontends/local-development." } }, "required": [ "fallback" ], "type": "object", "description": "Development configuration for the default application." }, "packageName": { "type": "string", "description": "The name used to run the application, e.g. the `name` field in the `package.json`. This is used by the local proxy to map the application config to the locally running app. This is only necessary when the application name does not match the `name` used in `package.json`. See https://vercel.com/docs/microfrontends/configuration#application-naming." }, "projectId": { "type": "string" } }, "required": [ "development", "projectId" ], "type": "object" }, { "properties": { "development": { "properties": { "fallback": { "type": "string", "description": "Fallback for local development, could point to any environment. If not provided for child apps, the fallback of the default app will be used. If passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTPS. If omitted, the port defaults to `80` for HTTP and `443` for HTTPS. See https://vercel.com/docs/microfrontends/local-development." }, "local": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "task": { "type": "string", "description": "The task to run when starting the development server. Should reference a script in the package.json of the application. The default value is \"dev\". See https://vercel.com/docs/microfrontends/local-development." } }, "type": "object", "description": "Development configuration for the child application." }, "routing": { "items": { "properties": { "group": { "type": "string", "description": "Group name for the paths." }, "flag": { "type": "string", "description": "The name of the feature flag that controls routing for this group of paths. See https://vercel.com/docs/microfrontends/path-routing#routing-changes-safely-with-flags." }, "paths": { "items": { "type": "string" }, "type": "array", "description": "A list of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing#supported-path-expressions." } }, "required": [ "paths" ], "type": "object", "description": "Groups of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing." }, "type": "array", "description": "Groups of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing." }, "assetPrefix": { "type": "string", "description": "The name of the asset prefix to use instead of the auto-generated name. The asset prefix is used to prefix all paths to static assets, such as JS, CSS, or images that are served by a specific application. It is necessary to ensure there are no conflicts with other applications on the same domain. An auto-generated asset prefix of the form `vc-ap-` is used when this field is not provided. When this field is provided, `/${assetPrefix}/:path*` must also be added to the list of paths in the `routing` field. Changing the asset prefix after a microfrontend application has already been deployed is not a forwards and backwards compatible change, and the asset prefix should be added to the `routing` field and deployed before setting the `assetPrefix` field. The default value is the auto-generated asset prefix of the form `vc-ap-`. See https://vercel.com/docs/microfrontends/path-routing#asset-prefix." }, "packageName": { "type": "string", "description": "The name used to run the application, e.g. the `name` field in the `package.json`. This is used by the local proxy to map the application config to the locally running app. This is only necessary when the application name does not match the `name` used in `package.json`. See https://vercel.com/docs/microfrontends/configuration#application-naming." }, "projectId": { "type": "string" } }, "required": [ "projectId", "routing" ], "type": "object" } ] }, "type": "object" }, "options": { "properties": { "disableOverrides": { "type": "boolean", "enum": [ false, true ], "description": "If you want to disable the overrides for the site. For example, if you are managing rewrites between applications externally, you may wish to disable the overrides on the toolbar as they will have no effect. See https://vercel.com/docs/microfrontends/managing-microfrontends/vercel-toolbar#routing-overrides." }, "localProxyPort": { "type": "number", "description": "The port number used by the local proxy server. The default value is 3024. See https://vercel.com/docs/microfrontends/local-development." } }, "type": "object", "description": "Optional configuration options for the microfrontend." } }, "required": [ "applications" ], "type": "object", "description": "projectIds are added when the config is uploaded to s3 deployment assets." } }, "required": [ "config" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "deploymentId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getMicrofrontendsConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.microfrontends.getMicrofrontendsConfig({\n deploymentId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/microfrontends/projects/{projectIdOrName}/production-mfe-config": { "get": { "description": "Get the microfrontends config for a project by ID or name.", "operationId": "getMicrofrontendsConfigForProject", "security": [ { "bearerToken": [] } ], "summary": "Get microfrontends config for a project", "tags": [ "microfrontends" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "config": { "nullable": true, "properties": { "$schema": { "type": "string", "description": "See https://openapi.vercel.sh/microfrontends.json." }, "version": { "type": "string", "enum": [ "1" ], "description": "The version of the microfrontends config schema." }, "applications": { "additionalProperties": { "oneOf": [ { "properties": { "development": { "properties": { "fallback": { "type": "string", "description": "Fallback for local development, could point to any environment. This is required for the default app. This value is used as the fallback for child apps as well if they do not have a fallback. If passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTPS. If omitted, the port defaults to `80` for HTTP and `443` for HTTPS. See https://vercel.com/docs/microfrontends/local-development." }, "local": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "task": { "type": "string", "description": "The task to run when starting the development server. Should reference a script in the package.json of the application. The default value is \"dev\". See https://vercel.com/docs/microfrontends/local-development." } }, "required": [ "fallback" ], "type": "object", "description": "Development configuration for the default application." }, "packageName": { "type": "string", "description": "The name used to run the application, e.g. the `name` field in the `package.json`. This is used by the local proxy to map the application config to the locally running app. This is only necessary when the application name does not match the `name` used in `package.json`. See https://vercel.com/docs/microfrontends/configuration#application-naming." }, "projectId": { "type": "string" } }, "required": [ "development", "projectId" ], "type": "object" }, { "properties": { "development": { "properties": { "fallback": { "type": "string", "description": "Fallback for local development, could point to any environment. If not provided for child apps, the fallback of the default app will be used. If passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTPS. If omitted, the port defaults to `80` for HTTP and `443` for HTTPS. See https://vercel.com/docs/microfrontends/local-development." }, "local": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "task": { "type": "string", "description": "The task to run when starting the development server. Should reference a script in the package.json of the application. The default value is \"dev\". See https://vercel.com/docs/microfrontends/local-development." } }, "type": "object", "description": "Development configuration for the child application." }, "routing": { "items": { "properties": { "group": { "type": "string", "description": "Group name for the paths." }, "flag": { "type": "string", "description": "The name of the feature flag that controls routing for this group of paths. See https://vercel.com/docs/microfrontends/path-routing#routing-changes-safely-with-flags." }, "paths": { "items": { "type": "string" }, "type": "array", "description": "A list of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing#supported-path-expressions." } }, "required": [ "paths" ], "type": "object", "description": "Groups of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing." }, "type": "array", "description": "Groups of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing." }, "assetPrefix": { "type": "string", "description": "The name of the asset prefix to use instead of the auto-generated name. The asset prefix is used to prefix all paths to static assets, such as JS, CSS, or images that are served by a specific application. It is necessary to ensure there are no conflicts with other applications on the same domain. An auto-generated asset prefix of the form `vc-ap-` is used when this field is not provided. When this field is provided, `/${assetPrefix}/:path*` must also be added to the list of paths in the `routing` field. Changing the asset prefix after a microfrontend application has already been deployed is not a forwards and backwards compatible change, and the asset prefix should be added to the `routing` field and deployed before setting the `assetPrefix` field. The default value is the auto-generated asset prefix of the form `vc-ap-`. See https://vercel.com/docs/microfrontends/path-routing#asset-prefix." }, "packageName": { "type": "string", "description": "The name used to run the application, e.g. the `name` field in the `package.json`. This is used by the local proxy to map the application config to the locally running app. This is only necessary when the application name does not match the `name` used in `package.json`. See https://vercel.com/docs/microfrontends/configuration#application-naming." }, "projectId": { "type": "string" } }, "required": [ "projectId", "routing" ], "type": "object" } ] }, "type": "object" }, "options": { "properties": { "disableOverrides": { "type": "boolean", "enum": [ false, true ], "description": "If you want to disable the overrides for the site. For example, if you are managing rewrites between applications externally, you may wish to disable the overrides on the toolbar as they will have no effect. See https://vercel.com/docs/microfrontends/managing-microfrontends/vercel-toolbar#routing-overrides." }, "localProxyPort": { "type": "number", "description": "The port number used by the local proxy server. The default value is 3024. See https://vercel.com/docs/microfrontends/local-development." } }, "type": "object", "description": "Optional configuration options for the microfrontend." } }, "required": [ "applications" ], "type": "object", "description": "projectIds are added when the config is uploaded to s3 deployment assets." } }, "required": [ "config" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "description": "The name or ID of the project", "in": "path", "required": true, "schema": { "description": "The name or ID of the project", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getMicrofrontendsConfigForProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.microfrontends.getMicrofrontendsConfigForProject({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/microfrontends/group": { "post": { "description": "Creates a microfrontends group and attaches multiple projects in a single request.", "operationId": "createMicrofrontendsGroupWithApplications", "security": [ { "bearerToken": [] } ], "summary": "Create a microfrontends group with applications", "tags": [ "microfrontends" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "newMicrofrontendsGroup": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "fallbackEnvironment": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "createdAt", "fallbackEnvironment", "id", "name", "slug", "updatedAt" ], "type": "object" } }, "required": [ "newMicrofrontendsGroup" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "500": { "description": "" } }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "groupName", "defaultApp", "otherApplications" ], "properties": { "groupName": { "type": "string", "example": "MFE Group 1", "description": "The name of the microfrontends group that will be used to identify the group" }, "defaultApp": { "type": "object", "required": [ "projectId" ], "description": "The default app for the new microfrontend group", "properties": { "projectId": { "type": "string", "description": "The id of the project that will be used as the default app for the new microfrontend group" }, "defaultRoute": { "type": "string", "description": "The default route for the default app of the new microfrontend group" } } }, "otherApplications": { "type": "array", "description": "The list of other applications that will be used in the new microfrontend group", "items": { "type": "object", "required": [ "projectId" ], "properties": { "projectId": { "type": "string", "description": "The id of the project that will be used in the new microfrontend group" }, "defaultRoute": { "type": "string", "description": "The default route for the application in the new microfrontend group" } } } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createMicrofrontendsGroupWithApplications", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.microfrontends.createMicrofrontendsGroupWithApplications({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n groupName: \"MFE Group 1\",\n defaultApp: {\n projectId: \"\",\n },\n otherApplications: [\n {\n projectId: \"\",\n },\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/observability/manage/configuration/projects": { "get": { "description": "Lists the projects that are currently configured as disabled for Observability Plus on a team.", "operationId": "getObservabilityConfigurationProjects", "security": [ { "bearerToken": [] } ], "summary": "Lists disabled Observability Plus projects", "tags": [ "api-observability" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "disabledProjects": { "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "disabledAt": { "type": "number" } }, "required": [ "disabledAt", "id" ], "type": "object" }, "type": "array" } }, "required": [ "disabledProjects" ], "type": "object" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getObservabilityConfigurationProjects", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.apiObservability.getObservabilityConfigurationProjects({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/observability/manage/configuration/projects/{projectIdOrName}": { "put": { "description": "Updates whether Observability Plus is disabled for a single project.", "operationId": "updateObservabilityConfigurationProject", "security": [ { "bearerToken": [] } ], "summary": "Updates a disabled Observability Plus project setting", "tags": [ "api-observability" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" } }, "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "429": { "description": "" } }, "parameters": [ { "name": "projectIdOrName", "description": "The ID or name of the project to update", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID or name of the project to update" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "disabled" ], "properties": { "disabled": { "type": "boolean", "description": "Whether Observability Plus should be disabled for the project" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateObservabilityConfigurationProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.apiObservability.updateObservabilityConfigurationProject({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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", "PROJECT_GUEST" ], "description": "Role of this user in the project.", "example": "ADMIN" }, "computedProjectRole": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ], "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", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ], "description": "The role of this user in the team.", "example": "CONTRIBUTOR" } }, "required": [ "computedProjectRole", "createdAt", "email", "role", "teamRole", "uid", "username" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "hasNext": { "type": "boolean", "enum": [ false, true ] }, "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", "hasNext", "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "getProjectMembers", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projectMembers.getProjectMembers({\n idOrName: \"prj_pavWOn1iLObbXLRiwVvzmPrTWyTf\",\n limit: 20,\n since: 1540095775951,\n until: 1540095775951,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getProjectMembers", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.ProjectMembers.GetProjectMembers(ctx, operations.GetProjectMembersRequest{\n IDOrName: \"prj_pavWOn1iLObbXLRiwVvzmPrTWyTf\",\n Limit: vercel.Int64(20),\n Since: vercel.Int64(1540095775951),\n Until: vercel.Int64(1540095775951),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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", "example": "ADMIN", "description": "The project role of the member that will be added.", "enum": [ "ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER" ] } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "addProjectMember", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projectMembers.addProjectMember({\n idOrName: \"prj_pavWOn1iLObbXLRiwVvzmPrTWyTf\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n uid: \"ndlgr43fadlPyCtREAqxxdyFK\",\n username: \"example\",\n email: \"entity@example.com\",\n role: \"ADMIN\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "addProjectMember", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.ProjectMembers.AddProjectMember(ctx, \"prj_pavWOn1iLObbXLRiwVvzmPrTWyTf\", nil, nil, vercel.Pointer(operations.CreateAddProjectMemberRequestBodyAddProjectMemberRequestBody1(\n operations.AddProjectMemberRequestBody1{\n UID: \"ndlgr43fadlPyCtREAqxxdyFK\",\n Username: vercel.String(\"example\"),\n Email: vercel.String(\"entity@example.com\"),\n Role: operations.RequestBodyRoleAdmin,\n },\n )))\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "removeProjectMember", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projectMembers.removeProjectMember({\n idOrName: \"prj_pavWOn1iLObbXLRiwVvzmPrTWyTf\",\n uid: \"ndlgr43fadlPyCtREAqxxdyFK\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "removeProjectMember", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.ProjectMembers.RemoveProjectMember(ctx, \"prj_pavWOn1iLObbXLRiwVvzmPrTWyTf\", \"ndlgr43fadlPyCtREAqxxdyFK\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/projects/{projectId}/routes": { "get": { "description": "Get the routing rules for a project. Supports searching by name/ID/pattern, filtering by route type, and diffing staged changes against production.", "operationId": "getRoutes", "security": [ { "bearerToken": [] } ], "summary": "Get project routing rules", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "routes": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "description": { "type": "string", "description": "Optional description of what the routing rule does." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether the routing rule is enabled. Defaults to true." }, "staged": { "type": "boolean", "enum": [ false, true ], "description": "Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production." }, "route": { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "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": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, these are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object." }, "destination": { "type": "string" }, "statusCode": { "type": "number" }, "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" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "rawSrc": { "type": "string", "description": "Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "The syntax type of the source pattern. Determines how the pattern is compiled to regex." }, "routeType": { "type": "string", "enum": [ "rewrite", "redirect", "set_status", "transform" ], "description": "Computed route type based on the route configuration. Only present in API responses, not stored in S3." } }, "required": [ "id", "name", "route" ], "type": "object", "description": "A routing rule with metadata for project-level routing." }, "type": "array" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." }, "diffCount": { "type": "number" } }, "required": [ "diffCount", "routes", "version" ], "type": "object" }, { "properties": { "routes": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "description": { "type": "string", "description": "Optional description of what the routing rule does." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether the routing rule is enabled. Defaults to true." }, "staged": { "type": "boolean", "enum": [ false, true ], "description": "Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production." }, "route": { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "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": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, these are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object." }, "destination": { "type": "string" }, "statusCode": { "type": "number" }, "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" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "rawSrc": { "type": "string", "description": "Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "The syntax type of the source pattern. Determines how the pattern is compiled to regex." }, "routeType": { "type": "string", "enum": [ "rewrite", "redirect", "set_status", "transform" ], "description": "Computed route type based on the route configuration. Only present in API responses, not stored in S3." } }, "required": [ "id", "name", "route" ], "type": "object", "description": "A routing rule with metadata for project-level routing." }, "type": "array" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "routes", "version" ], "type": "object" }, { "properties": { "routes": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "description": { "type": "string", "description": "Optional description of what the routing rule does." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether the routing rule is enabled. Defaults to true." }, "staged": { "type": "boolean", "enum": [ false, true ], "description": "Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production." }, "route": { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "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": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, these are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object." }, "destination": { "type": "string" }, "statusCode": { "type": "number" }, "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" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "rawSrc": { "type": "string", "description": "Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "The syntax type of the source pattern. Determines how the pattern is compiled to regex." }, "routeType": { "type": "string", "enum": [ "rewrite", "redirect", "set_status", "transform" ], "description": "Computed route type based on the route configuration. Only present in API responses, not stored in S3." } }, "required": [ "id", "name", "route" ], "type": "object", "description": "A routing rule with metadata for project-level routing." }, "type": "array" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." }, "limit": { "properties": { "maxRoutes": { "type": "number" }, "currentRoutes": { "type": "number" } }, "required": [ "currentRoutes", "maxRoutes" ], "type": "object" } }, "required": [ "limit", "routes", "version" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "projectId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "versionId", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "q", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "filter", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "rewrite", "redirect", "set_status", "transform" ] } }, { "name": "diff", "in": "query", "required": false, "schema": { "oneOf": [ { "type": "boolean" }, { "type": "string", "enum": [ "only" ] } ] } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getRoutes", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projectRoutes.getRoutes({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "put": { "description": "Stage routing rules for a project. Set `overwrite` to true to replace all existing rules, or omit it to merge with existing rules by ID. Returns the new staged version.", "operationId": "stageRoutes", "security": [ { "bearerToken": [] } ], "summary": "Stage routing rules", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "version" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "projectId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "overwrite": { "type": "boolean" }, "routes": { "type": "array", "default": [], "items": { "type": "object", "required": [ "id", "name", "route" ], "properties": { "id": { "type": "string", "maxLength": 256 }, "name": { "type": "string", "maxLength": 256 }, "description": { "type": "string", "maxLength": 1024 }, "enabled": { "type": "boolean" }, "route": { "type": "object", "required": [ "src" ], "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "type": "object" }, "caseSensitive": { "type": "boolean" }, "status": { "type": "integer" }, "has": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "host", "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "type": "string" } } } }, "missing": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "host", "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "type": "string" } } } }, "transforms": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] }, "target": { "type": "object" }, "args": {}, "env": { "type": "array", "items": { "type": "string" } } } } }, "respectOriginCacheControl": { "type": "boolean" } } } } } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "stageRoutes", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projectRoutes.stageRoutes({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Add a single routing rule to a project at a specified position. Defaults to the end of the list if no position is provided. The route is enabled by default. Stages a new version with the added route.", "operationId": "addRoute", "security": [ { "bearerToken": [] } ], "summary": "Add a routing rule", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "route": { "properties": { "routeType": { "type": "string", "enum": [ "rewrite", "redirect", "set_status", "transform" ] }, "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "description": { "type": "string", "description": "Optional description of what the routing rule does." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether the routing rule is enabled. Defaults to true." }, "staged": { "type": "boolean", "enum": [ false, true ], "description": "Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production." }, "route": { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "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": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, these are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object." }, "destination": { "type": "string" }, "statusCode": { "type": "number" }, "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" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "rawSrc": { "type": "string", "description": "Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "The syntax type of the source pattern. Determines how the pattern is compiled to regex." } }, "required": [ "id", "name", "route" ], "type": "object" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "route", "version" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "projectId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "route" ], "properties": { "route": { "type": "object", "required": [ "name", "route" ], "properties": { "name": { "type": "string", "maxLength": 256 }, "description": { "type": "string", "maxLength": 1024 }, "enabled": { "type": "boolean" }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "Pattern syntax type. If not provided, inferred from pattern." }, "route": { "type": "object", "required": [ "src" ], "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "type": "object" }, "caseSensitive": { "type": "boolean" }, "status": { "type": "integer" }, "has": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "host", "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "type": "string" } } } }, "missing": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "host", "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "type": "string" } } } }, "transforms": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] }, "target": { "type": "object" }, "args": {}, "env": { "type": "array", "items": { "type": "string" } } } } }, "respectOriginCacheControl": { "type": "boolean" } } } } }, "position": { "type": "object", "description": "Controls where the route is inserted. Defaults to \"end\" if omitted.", "properties": { "placement": { "type": "string", "enum": [ "start", "end", "after", "before" ], "description": "\"after\"/\"before\" require referenceId." }, "referenceId": { "type": "string", "description": "Route ID to insert after/before. Required for \"after\"/\"before\"." } } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "addRoute", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projectRoutes.addRoute({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Delete one or more routing rules from a project by ID. Stages a new version with the routes removed.", "operationId": "deleteRoutes", "security": [ { "bearerToken": [] } ], "summary": "Delete routing rules", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "deletedCount": { "type": "number" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "deletedCount", "version" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "projectId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "routeIds" ], "properties": { "routeIds": { "type": "array", "description": "The IDs of the routes to delete", "minItems": 1, "items": { "type": "string" } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "deleteRoutes", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projectRoutes.deleteRoutes({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{projectId}/routes/{routeId}": { "patch": { "description": "Replace a routing rule identified by its ID, or restore it from the current production version. Stages a new version with the modified route.", "operationId": "editRoute", "security": [ { "bearerToken": [] } ], "summary": "Edit a routing rule", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "route": { "properties": { "routeType": { "type": "string", "enum": [ "rewrite", "redirect", "set_status", "transform" ] }, "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "description": { "type": "string", "description": "Optional description of what the routing rule does." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether the routing rule is enabled. Defaults to true." }, "staged": { "type": "boolean", "enum": [ false, true ], "description": "Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production." }, "route": { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "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": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, these are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object." }, "destination": { "type": "string" }, "statusCode": { "type": "number" }, "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" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "rawSrc": { "type": "string", "description": "Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "The syntax type of the source pattern. Determines how the pattern is compiled to regex." } }, "required": [ "id", "name", "route" ], "type": "object" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "version" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "projectId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "routeId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "route": { "type": "object", "description": "The full route object to replace the existing route with", "required": [ "name", "route" ], "properties": { "name": { "type": "string", "maxLength": 256 }, "description": { "type": "string", "maxLength": 1024 }, "enabled": { "type": "boolean" }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "Pattern syntax type. If not provided, inferred from pattern." }, "route": { "type": "object", "required": [ "src" ], "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "type": "object" }, "caseSensitive": { "type": "boolean" }, "status": { "type": "integer" }, "has": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "host", "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "type": "string" } } } }, "missing": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "host", "header", "cookie", "query" ] }, "key": { "type": "string" }, "value": { "type": "string" } } } }, "transforms": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] }, "target": { "type": "object" }, "args": {}, "env": { "type": "array", "items": { "type": "string" } } } } }, "respectOriginCacheControl": { "type": "boolean" } } } } }, "restore": { "type": "boolean", "description": "If true, restores the staged route to the value in the production version." } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "editRoute", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projectRoutes.editRoute({\n projectId: \"\",\n routeId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{projectId}/routes/generate": { "post": { "description": "Generate a routing rule configuration from a natural language description. Returns a suggested route configuration that can be reviewed and saved.", "operationId": "generateRoute", "security": [ { "bearerToken": [] } ], "summary": "Generate a routing rule from natural language", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "route": { "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "pathCondition": { "properties": { "value": { "type": "string" }, "syntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ] } }, "required": [ "syntax", "value" ], "type": "object" }, "conditions": { "items": { "properties": { "field": { "type": "string", "enum": [ "host", "header", "cookie", "query" ] }, "operator": { "type": "string", "enum": [ "contains", "eq", "re", "exists" ] }, "key": { "type": "string" }, "value": { "type": "string" }, "missing": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "field", "missing", "operator" ], "type": "object" }, "type": "array" }, "actions": { "items": { "properties": { "type": { "type": "string", "enum": [ "rewrite", "redirect", "set-status", "modify" ] }, "subType": { "type": "string", "enum": [ "response-headers", "transform-request-header", "transform-request-query" ] }, "dest": { "type": "string" }, "status": { "type": "number" }, "headers": { "items": { "properties": { "key": { "type": "string" }, "value": { "type": "string" }, "op": { "type": "string", "enum": [ "append", "set", "delete" ] } }, "required": [ "key", "op" ], "type": "object" }, "type": "array" } }, "required": [ "type" ], "type": "object" }, "type": "array" } }, "required": [ "actions", "description", "name", "pathCondition" ], "type": "object" }, "error": { "type": "string" } }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "408": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "projectId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "prompt" ], "properties": { "prompt": { "type": "string", "maxLength": 2000 }, "currentRoute": { "type": "object", "required": [ "pathCondition", "actions" ], "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "pathCondition": { "type": "object", "properties": { "value": { "type": "string" }, "syntax": { "type": "string" } } }, "conditions": { "type": "array", "items": { "type": "object", "properties": { "field": { "type": "string" }, "operator": { "type": "string" }, "key": { "type": "string" }, "value": { "type": "string" }, "missing": { "type": "boolean" } } } }, "actions": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string" }, "subType": { "type": "string" }, "dest": { "type": "string" }, "status": { "type": "integer" }, "headers": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "value": { "type": "string" }, "op": { "type": "string" } } } } } } } } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "generateRoute", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projectRoutes.generateRoute({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{projectId}/routes/versions": { "get": { "description": "Get the version history for a project's routing rules. Returns the staging version (if one exists) followed by production versions, most recent first. The staging version has `isStaging: true` and the current production version has `isLive: true`.", "operationId": "getRouteVersions", "security": [ { "bearerToken": [] } ], "summary": "Get routing rule version history", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "versions": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." }, "type": "array" } }, "required": [ "versions" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "projectId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getRouteVersions", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projectRoutes.getRouteVersions({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Promote staged routing rules to production, restore a previous production version, or discard staged changes. - `promote`: Publishes the staging version to production. - `restore`: Rolls back to a previous production version. - `discard`: Removes the staging version without publishing.", "operationId": "updateRouteVersions", "security": [ { "bearerToken": [] } ], "summary": "Promote, restore, or discard a routing rule version", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "version" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "projectId", "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "id", "action" ], "properties": { "id": { "type": "string" }, "action": { "type": "string", "enum": [ "promote", "restore", "discard" ] } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateRouteVersions", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projectRoutes.updateRouteVersions({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v10/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": "", "content": { "application/json": { "schema": { "nullable": true, "oneOf": [ { "items": { "properties": { "accountId": { "type": "string" }, "alias": { "items": { "properties": { "configuredBy": { "nullable": true, "type": "string", "enum": [ "A", "CNAME", "http", "dns-01", null ] }, "configuredChangedAt": { "nullable": true, "type": "number" }, "createdAt": { "nullable": true, "type": "number" }, "deployment": { "nullable": true, "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "production", "preview" ] }, "gitBranch": { "nullable": true, "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "target": { "type": "string", "enum": [ "PRODUCTION", "STAGING", "PREVIEW" ] } }, "required": [ "deployment", "domain", "environment", "target" ], "type": "object" }, "type": "array" }, "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": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "createdAt": { "type": "number" }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "installCommand": { "nullable": true, "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "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 identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "services", "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "mastra", null ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "latestDeployments": { "items": { "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "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." }, "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "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-custom-host" ] }, "host": { "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x" ] }, "outputDirectory": { "nullable": true, "type": "string" }, "passwordProtection": { "nullable": true, "type": "object" }, "publicSource": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionRegion": { "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "object" }, "transferCompletedAt": { "type": "number" }, "transferStartedAt": { "type": "number" }, "transferToAccountId": { "type": "string" }, "transferredFromAccountId": { "type": "string" }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "updatedAt": { "type": "number" }, "live": { "type": "boolean", "enum": [ false, true ] }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "enabled", "disabled" ], "description": "Whether the Vercel bot should automatically create GitHub deployments https://docs.github.com/en/rest/deployments/deployments#about-deployments NOTE: repository-dispatch events should be used instead" }, "disableRepositoryDispatchEvents": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should not automatically create GitHub repository-dispatch events on deployment events. https://vercel.com/docs/git/vercel-for-github#repository-dispatch-events" }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "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", "query", "host", "method", "header", "cookie", "ip_address", "protocol", "scheme", "environment", "region", "initial_request_path" ] }, "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", "query", "host", "method", "header", "cookie", "ip_address", "protocol", "scheme", "environment", "region", "initial_request_path" ] }, "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": [ "log", "deny", "challenge", "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", "keys", "limit", "window" ], "type": "object" }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action", "rule_id" ], "type": "object" } }, "type": "object" }, "type": "array" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "requestLogsKey": { "items": { "type": "string" }, "type": "array" }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "team", "global" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "tier": { "type": "string" }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" } }, "required": [ "accountId", "alias", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig", "serverlessFunctionRegion" ], "type": "object" }, "type": "array" }, { "properties": { "projects": { "items": { "properties": { "accountId": { "type": "string" }, "alias": { "items": { "properties": { "configuredBy": { "nullable": true, "type": "string", "enum": [ "A", "CNAME", "http", "dns-01", null ] }, "configuredChangedAt": { "nullable": true, "type": "number" }, "createdAt": { "nullable": true, "type": "number" }, "deployment": { "nullable": true, "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "production", "preview" ] }, "gitBranch": { "nullable": true, "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "target": { "type": "string", "enum": [ "PRODUCTION", "STAGING", "PREVIEW" ] } }, "required": [ "deployment", "domain", "environment", "target" ], "type": "object" }, "type": "array" }, "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": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "createdAt": { "type": "number" }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "installCommand": { "nullable": true, "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "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 identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "services", "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "mastra", null ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "latestDeployments": { "items": { "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "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." }, "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "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-custom-host" ] }, "host": { "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x" ] }, "outputDirectory": { "nullable": true, "type": "string" }, "passwordProtection": { "nullable": true, "type": "object" }, "publicSource": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionRegion": { "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "object" }, "transferCompletedAt": { "type": "number" }, "transferStartedAt": { "type": "number" }, "transferToAccountId": { "type": "string" }, "transferredFromAccountId": { "type": "string" }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "updatedAt": { "type": "number" }, "live": { "type": "boolean", "enum": [ false, true ] }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "enabled", "disabled" ], "description": "Whether the Vercel bot should automatically create GitHub deployments https://docs.github.com/en/rest/deployments/deployments#about-deployments NOTE: repository-dispatch events should be used instead" }, "disableRepositoryDispatchEvents": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should not automatically create GitHub repository-dispatch events on deployment events. https://vercel.com/docs/git/vercel-for-github#repository-dispatch-events" }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "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", "query", "host", "method", "header", "cookie", "ip_address", "protocol", "scheme", "environment", "region", "initial_request_path" ] }, "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", "query", "host", "method", "header", "cookie", "ip_address", "protocol", "scheme", "environment", "region", "initial_request_path" ] }, "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": [ "log", "deny", "challenge", "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", "keys", "limit", "window" ], "type": "object" }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action", "rule_id" ], "type": "object" } }, "type": "object" }, "type": "array" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "requestLogsKey": { "items": { "type": "string" }, "type": "array" }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "team", "global" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "tier": { "type": "string" }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" } }, "required": [ "accountId", "alias", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig", "serverlessFunctionRegion" ], "type": "object" }, "type": "array" }, "pagination": { "oneOf": [ { "properties": { "count": { "type": "number", "description": "Amount of items in the current page.", "example": 20 }, "next": { "nullable": true, "type": "string", "description": "Continuation token that must be used to request the next page. Base32 encoded for safe URL transmission.", "example": "JBSWY3DPEHPK3PXP" } }, "required": [ "count", "next" ], "type": "object", "description": "This object contains information related to the pagination of the current request using continuation tokens. Since CosmosDB doesn't support going to previous pages, only count and next are provided." }, { "$ref": "#/components/schemas/Pagination" } ] } }, "required": [ "pagination", "projects" ], "type": "object" }, { "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": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "production", "preview" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "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 * * *" }, "source": { "type": "string", "enum": [ "api" ], "description": "The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json)." }, "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "dataCache": { "properties": { "userDisabled": { "type": "boolean", "enum": [ false, true ] }, "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "delegatedProtection": { "nullable": true, "type": "object" }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "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 identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "customEnvironments": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "services", "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "mastra", null ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "jobs": { "properties": { "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "typecheck": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" } }, "type": "object" }, "latestDeployments": { "items": { "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "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." }, "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "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-custom-host" ] }, "host": { "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "routeObservabilityToThisProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether observability data should be routed to this microfrontend project or a root project." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "enum": [ false, true ], "description": "Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "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" }, "passwordProtection": { "nullable": true, "type": "object" }, "productionDeploymentsFastLane": { "type": "boolean", "enum": [ false, true ] }, "publicSource": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollbackDescription": { "properties": { "userId": { "type": "string", "description": "The user who rolled back the project." }, "username": { "type": "string", "description": "The username of the user who rolled back the project." }, "description": { "type": "string", "description": "User-supplied explanation of why they rolled back the project. Limited to 250 characters." }, "createdAt": { "type": "number", "description": "Timestamp of when the rollback was requested." } }, "required": [ "createdAt", "description", "userId", "username" ], "type": "object", "description": "Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback." }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "defaultResourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "skewProtectionBoundaryAt": { "type": "number" }, "skewProtectionMaxAge": { "type": "number" }, "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "staticIps": { "properties": { "builds": { "type": "boolean", "enum": [ false, true ] }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "regions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "builds", "enabled", "regions" ], "type": "object" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "enablePreviewFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "enableProductionFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "permissions": { "properties": { "oauth2Connection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organization": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "user": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userPreference": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAuthn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "accessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "agent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alerts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alertRules": { "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" }, "apiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyAiGateway": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oauth2Application": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallationRequest": { "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" }, "billingRefund": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingTaxId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blob": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blobStoreTokenSet": { "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" }, "ciInvocations": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciLogs": { "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" }, "connexClient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClientProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachineDefault": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheBillingSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "defaultDeploymentProtection": { "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" }, "drain": { "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" }, "endpointVerification": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "fileUpload": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "flagsExplorerSubscription": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "gitRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "imageOptimizationNewPrice": { "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" }, "integrationConfigurationProjects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationRole": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationDeploymentAction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResource": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceReplCommand": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceSecrets": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationSSOSession": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationVercelConfigurationOverride": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationPullRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ipBlocking": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "jobGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logDrain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceBillingData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationEdgeConfigData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInstallationMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "Monitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringChart": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringQuery": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationCustomerBudget": { "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" }, "notificationPreferences": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationStatementOfReasons": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationUsageAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityFunnel": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityNotebook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "openTelemetryEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ownEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtectionInvoiceItem": { "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" }, "postgresStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "previewDeploymentSuffix": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateCloudAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "proTrialOnboarding": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "rateLimit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redis": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redisStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "remoteCaching": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "repository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "samlConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "secret": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sensitiveEnvironmentVariablePolicy": { "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" }, "storeIsLocked": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTokenSetSensitive": { "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" }, "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" }, "teamInviteLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamJoin": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMemberMfaStatus": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMicrofrontends": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembershipDisconnectSAML": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamTokenInvalidation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "token": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "toolbarComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usageCycle": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vpcPeeringConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalyticsPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook-event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "bulkRedirects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachine": { "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" }, "deploymentBuildLogs": { "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" }, "deploymentV0": { "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" }, "edgeCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "environments": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "job": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logsPreset": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandBuild": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandConcurrency": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "optionsAllowlist": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateLinkEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "productionAliasProtectionBypass": { "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" }, "projectAnalyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheckRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDelegatedProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentExpiration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentHook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentProtectionStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEvent": { "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" }, "projectFlagsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFromV0": { "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" }, "projectOIDCToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectPermissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRollingRelease": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRoutes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTier": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferOut": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "pageIntegrity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "seawallConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityPlusConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "shareableLinkStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarConnection": { "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" }, "trustedSources": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "v0Chat": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" } }, "type": "object" }, "lastRollbackTarget": { "nullable": true, "type": "object" }, "lastAliasRequest": { "nullable": true, "properties": { "fromDeploymentId": { "nullable": true, "type": "string" }, "toDeploymentId": { "type": "string" }, "fromRollingReleaseId": { "type": "string", "description": "If rolling back from a rolling release, fromDeploymentId captures the \"base\" of that rolling release, and fromRollingReleaseId captures the \"target\" of that rolling release." }, "jobStatus": { "type": "string", "enum": [ "succeeded", "failed", "skipped", "pending", "in-progress" ] }, "requestedAt": { "type": "number" }, "type": { "type": "string", "enum": [ "promote", "rollback" ] } }, "required": [ "fromDeploymentId", "jobStatus", "requestedAt", "toDeploymentId", "type" ], "type": "object" }, "protectionBypass": { "additionalProperties": { "oneOf": [ { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "integration-automation-bypass" ] }, "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "createdAt", "createdBy", "integrationId", "scope" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "automation-bypass" ] }, "isEnvVar": { "type": "boolean", "enum": [ false, true ], "description": "When there was only one bypass, it was automatically set as an env var on deployments. With multiple bypasses, there is always one bypass that is selected as the default, and gets set as an env var on deployments. As this is a new field, undefined means that the bypass is the env var. If there are any automation bypasses, exactly one must be the env var." }, "note": { "type": "string", "description": "Optional note about the bypass to be displayed in the UI" } }, "required": [ "createdAt", "createdBy", "scope" ], "type": "object" } ] }, "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "trustedIps": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "addresses": { "items": { "properties": { "value": { "type": "string" }, "note": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "protectionMode": { "type": "string", "enum": [ "additional", "exclusive" ] } }, "required": [ "addresses", "deploymentType", "protectionMode" ], "type": "object" }, { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } }, "required": [ "deploymentType" ], "type": "object" } ] }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "enabled", "disabled" ], "description": "Whether the Vercel bot should automatically create GitHub deployments https://docs.github.com/en/rest/deployments/deployments#about-deployments NOTE: repository-dispatch events should be used instead" }, "disableRepositoryDispatchEvents": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should not automatically create GitHub repository-dispatch events on deployment events. https://vercel.com/docs/git/vercel-for-github#repository-dispatch-events" }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "concurrencyBucketName": { "type": "string" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "attackModeActiveUntil": { "nullable": true, "type": "number" }, "firewallConfigVersion": { "type": "number" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "team", "global" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "tier": { "type": "string" }, "flatRateTier": { "type": "string", "enum": [ "standard", "base", "advanced", "critical" ] }, "usageStatus": { "properties": { "kind": { "type": "string", "enum": [ "flat" ], "description": "Billing mode. Always 'flat' for flat-rate projects." }, "exceededAllowanceUntil": { "type": "number", "description": "Timestamp until which the project has exceeded its CDN allowance." }, "bypassThrottleUntil": { "type": "number", "description": "Timestamp until which throttling is bypassed (project pays list rates for overage)." } }, "required": [ "kind" ], "type": "object" }, "features": { "properties": { "webAnalytics": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "v0": { "type": "boolean", "enum": [ false, true ] }, "v0Created": { "type": "boolean", "enum": [ false, true ] }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" }, "hasDeployments": { "type": "boolean", "enum": [ false, true ] }, "dismissedToasts": { "items": { "properties": { "key": { "type": "string" }, "dismissedAt": { "type": "number" }, "action": { "type": "string", "enum": [ "delete", "cancel", "accept" ] }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "previousValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "currentValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "currentValue", "previousValue" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "action", "dismissedAt", "key", "value" ], "type": "object" }, "type": "array" }, "protectedSourcemaps": { "type": "boolean", "enum": [ false, true ] }, "tracing": { "properties": { "domains": { "type": "string" }, "ignorePaths": { "items": { "type": "string" }, "type": "array" }, "samplingRules": { "items": { "properties": { "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate" ], "type": "object" }, "type": "array" } }, "type": "object" } }, "required": [ "accountId", "defaultResourceConfig", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig" ], "type": "object" }, "type": "array" }, "pagination": { "oneOf": [ { "properties": { "count": { "type": "number", "description": "Amount of items in the current page.", "example": 20 }, "next": { "nullable": true, "type": "string", "description": "Continuation token that must be used to request the next page. Base32 encoded for safe URL transmission.", "example": "JBSWY3DPEHPK3PXP" } }, "required": [ "count", "next" ], "type": "object", "description": "This object contains information related to the pagination of the current request using continuation tokens. Since CosmosDB doesn't support going to previous pages, only count and next are provided." }, { "$ref": "#/components/schemas/Pagination" } ] } }, "required": [ "pagination", "projects" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "ls", "list" ] }, "parameters": [ { "name": "from", "description": "Query only projects updated after the given timestamp or continuation token.", "in": "query", "schema": { "description": "Query only projects updated after the given timestamp or continuation token.", "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", "maxLength": 100 } }, { "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" } }, { "name": "elasticConcurrencyEnabled", "description": "Filter results by projects with elastic concurrency enabled", "in": "query", "schema": { "description": "Filter results by projects with elastic concurrency enabled", "type": "string", "enum": [ "1", "0" ], "example": "1" } }, { "name": "staticIpsEnabled", "description": "Filter results by projects with Static IPs enabled", "in": "query", "schema": { "description": "Filter results by projects with Static IPs enabled", "enum": [ "0", "1" ], "example": "1", "type": "string" } }, { "name": "buildMachineTypes", "description": "Filter results by build machine types. Accepts comma-separated values. Use \"default\" for projects without a build machine type set.", "in": "query", "schema": { "description": "Filter results by build machine types. Accepts comma-separated values. Use \"default\" for projects without a build machine type set.", "type": "string", "example": "default,enhanced" } }, { "name": "buildQueueConfiguration", "description": "Filter results by build queue configuration. SKIP_NAMESPACE_QUEUE includes projects without a configuration set.", "in": "query", "schema": { "description": "Filter results by build queue configuration. SKIP_NAMESPACE_QUEUE includes projects without a configuration set.", "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ], "example": "SKIP_NAMESPACE_QUEUE" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getProjects", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.getProjects({\n gitForkProtection: \"1\",\n repoUrl: \"https://github.com/vercel/next.js\",\n elasticConcurrencyEnabled: \"1\",\n staticIpsEnabled: \"1\",\n buildMachineTypes: \"default,enhanced\",\n buildQueueConfiguration: \"SKIP_NAMESPACE_QUEUE\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v11/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": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "production", "preview" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "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 * * *" }, "source": { "type": "string", "enum": [ "api" ], "description": "The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json)." }, "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "dataCache": { "properties": { "userDisabled": { "type": "boolean", "enum": [ false, true ] }, "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "delegatedProtection": { "nullable": true, "type": "object" }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "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 identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "customEnvironments": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "services", "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "mastra", null ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "jobs": { "properties": { "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "typecheck": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" } }, "type": "object" }, "latestDeployments": { "items": { "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "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." }, "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "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-custom-host" ] }, "host": { "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "routeObservabilityToThisProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether observability data should be routed to this microfrontend project or a root project." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "enum": [ false, true ], "description": "Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "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" }, "passwordProtection": { "nullable": true, "type": "object" }, "productionDeploymentsFastLane": { "type": "boolean", "enum": [ false, true ] }, "publicSource": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollbackDescription": { "properties": { "userId": { "type": "string", "description": "The user who rolled back the project." }, "username": { "type": "string", "description": "The username of the user who rolled back the project." }, "description": { "type": "string", "description": "User-supplied explanation of why they rolled back the project. Limited to 250 characters." }, "createdAt": { "type": "number", "description": "Timestamp of when the rollback was requested." } }, "required": [ "createdAt", "description", "userId", "username" ], "type": "object", "description": "Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback." }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "defaultResourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "skewProtectionBoundaryAt": { "type": "number" }, "skewProtectionMaxAge": { "type": "number" }, "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "staticIps": { "properties": { "builds": { "type": "boolean", "enum": [ false, true ] }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "regions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "builds", "enabled", "regions" ], "type": "object" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "enablePreviewFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "enableProductionFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "permissions": { "properties": { "oauth2Connection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organization": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "user": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userPreference": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAuthn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "accessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "agent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alerts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alertRules": { "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" }, "apiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyAiGateway": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oauth2Application": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallationRequest": { "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" }, "billingRefund": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingTaxId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blob": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blobStoreTokenSet": { "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" }, "ciInvocations": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciLogs": { "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" }, "connexClient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClientProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachineDefault": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheBillingSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "defaultDeploymentProtection": { "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" }, "drain": { "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" }, "endpointVerification": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "fileUpload": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "flagsExplorerSubscription": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "gitRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "imageOptimizationNewPrice": { "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" }, "integrationConfigurationProjects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationRole": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationDeploymentAction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResource": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceReplCommand": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceSecrets": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationSSOSession": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationVercelConfigurationOverride": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationPullRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ipBlocking": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "jobGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logDrain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceBillingData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationEdgeConfigData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInstallationMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "Monitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringChart": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringQuery": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationCustomerBudget": { "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" }, "notificationPreferences": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationStatementOfReasons": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationUsageAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityFunnel": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityNotebook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "openTelemetryEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ownEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtectionInvoiceItem": { "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" }, "postgresStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "previewDeploymentSuffix": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateCloudAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "proTrialOnboarding": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "rateLimit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redis": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redisStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "remoteCaching": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "repository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "samlConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "secret": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sensitiveEnvironmentVariablePolicy": { "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" }, "storeIsLocked": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTokenSetSensitive": { "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" }, "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" }, "teamInviteLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamJoin": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMemberMfaStatus": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMicrofrontends": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembershipDisconnectSAML": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamTokenInvalidation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "token": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "toolbarComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usageCycle": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vpcPeeringConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalyticsPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook-event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "bulkRedirects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachine": { "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" }, "deploymentBuildLogs": { "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" }, "deploymentV0": { "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" }, "edgeCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "environments": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "job": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logsPreset": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandBuild": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandConcurrency": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "optionsAllowlist": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateLinkEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "productionAliasProtectionBypass": { "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" }, "projectAnalyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheckRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDelegatedProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentExpiration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentHook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentProtectionStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEvent": { "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" }, "projectFlagsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFromV0": { "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" }, "projectOIDCToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectPermissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRollingRelease": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRoutes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTier": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferOut": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "pageIntegrity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "seawallConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityPlusConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "shareableLinkStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarConnection": { "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" }, "trustedSources": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "v0Chat": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" } }, "type": "object" }, "lastRollbackTarget": { "nullable": true, "type": "object" }, "lastAliasRequest": { "nullable": true, "properties": { "fromDeploymentId": { "nullable": true, "type": "string" }, "toDeploymentId": { "type": "string" }, "fromRollingReleaseId": { "type": "string", "description": "If rolling back from a rolling release, fromDeploymentId captures the \"base\" of that rolling release, and fromRollingReleaseId captures the \"target\" of that rolling release." }, "jobStatus": { "type": "string", "enum": [ "succeeded", "failed", "skipped", "pending", "in-progress" ] }, "requestedAt": { "type": "number" }, "type": { "type": "string", "enum": [ "promote", "rollback" ] } }, "required": [ "fromDeploymentId", "jobStatus", "requestedAt", "toDeploymentId", "type" ], "type": "object" }, "protectionBypass": { "additionalProperties": { "oneOf": [ { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "integration-automation-bypass" ] }, "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "createdAt", "createdBy", "integrationId", "scope" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "automation-bypass" ] }, "isEnvVar": { "type": "boolean", "enum": [ false, true ], "description": "When there was only one bypass, it was automatically set as an env var on deployments. With multiple bypasses, there is always one bypass that is selected as the default, and gets set as an env var on deployments. As this is a new field, undefined means that the bypass is the env var. If there are any automation bypasses, exactly one must be the env var." }, "note": { "type": "string", "description": "Optional note about the bypass to be displayed in the UI" } }, "required": [ "createdAt", "createdBy", "scope" ], "type": "object" } ] }, "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "trustedIps": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "addresses": { "items": { "properties": { "value": { "type": "string" }, "note": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "protectionMode": { "type": "string", "enum": [ "additional", "exclusive" ] } }, "required": [ "addresses", "deploymentType", "protectionMode" ], "type": "object" }, { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } }, "required": [ "deploymentType" ], "type": "object" } ] }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "enabled", "disabled" ], "description": "Whether the Vercel bot should automatically create GitHub deployments https://docs.github.com/en/rest/deployments/deployments#about-deployments NOTE: repository-dispatch events should be used instead" }, "disableRepositoryDispatchEvents": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should not automatically create GitHub repository-dispatch events on deployment events. https://vercel.com/docs/git/vercel-for-github#repository-dispatch-events" }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "concurrencyBucketName": { "type": "string" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "attackModeActiveUntil": { "nullable": true, "type": "number" }, "firewallConfigVersion": { "type": "number" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "team", "global" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "tier": { "type": "string" }, "flatRateTier": { "type": "string", "enum": [ "standard", "base", "advanced", "critical" ] }, "usageStatus": { "properties": { "kind": { "type": "string", "enum": [ "flat" ], "description": "Billing mode. Always 'flat' for flat-rate projects." }, "exceededAllowanceUntil": { "type": "number", "description": "Timestamp until which the project has exceeded its CDN allowance." }, "bypassThrottleUntil": { "type": "number", "description": "Timestamp until which throttling is bypassed (project pays list rates for overage)." } }, "required": [ "kind" ], "type": "object" }, "features": { "properties": { "webAnalytics": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "v0": { "type": "boolean", "enum": [ false, true ] }, "v0Created": { "type": "boolean", "enum": [ false, true ] }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" }, "hasDeployments": { "type": "boolean", "enum": [ false, true ] }, "dismissedToasts": { "items": { "properties": { "key": { "type": "string" }, "dismissedAt": { "type": "number" }, "action": { "type": "string", "enum": [ "delete", "cancel", "accept" ] }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "previousValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "currentValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "currentValue", "previousValue" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "action", "dismissedAt", "key", "value" ], "type": "object" }, "type": "array" }, "protectedSourcemaps": { "type": "boolean", "enum": [ false, true ] }, "tracing": { "properties": { "domains": { "type": "string" }, "ignorePaths": { "items": { "type": "string" }, "type": "array" }, "samplingRules": { "items": { "properties": { "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate" ], "type": "object" }, "type": "array" } }, "type": "object" } }, "required": [ "accountId", "defaultResourceConfig", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig" ], "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.\nAt least one environment variable failed validation\nThe Bitbucket Webhook for the project link could not be created\nThe Gitlab Webhook for the project link could not be created" }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated\nPro customers are allowed to deploy Serverless Functions to up to `proMaxRegions` regions, or if the project was created before the limit was introduced.\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": "A project with the provided name already exists." }, "428": { "description": "Owner does not have protection add-on" }, "429": { "description": "" }, "500": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "bodyArguments": [ "name" ] }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": false, "properties": { "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 }, "previewDeploymentsDisabled": { "description": "Specifies whether preview deployments are disabled for this project.", "type": "boolean", "nullable": true }, "previewDeploymentSuffix": { "description": "Custom domain suffix for preview deployments. Takes precedence over team-level suffix. Must be a domain owned by the team.", "type": "string", "maxLength": 253, "nullable": true }, "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", "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, "services", "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "mastra" ] }, "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", "github-limited", "gitlab", "bitbucket", "vercel" ] } }, "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 }, "skipGitConnectDuringLink": { "description": "Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`.", "type": "boolean", "deprecated": true }, "ssoProtection": { "description": "The Vercel Auth setting for the project (historically named \\\"SSO Protection\\\")", "type": "object", "properties": { "deploymentType": { "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } }, "required": [ "deploymentType" ], "nullable": 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.", "deprecated": true, "type": "boolean", "default": true }, "issuerMode": { "description": "team: `https://oidc.vercel.com/[team_slug]` global: `https://oidc.vercel.com`", "type": "string", "enum": [ "team", "global" ], "default": "team" } } }, "enableAffectedProjectsDeployments": { "description": "Opt-in to skip deployments when there are no changes to the root directory and its dependencies", "type": "boolean" }, "resourceConfig": { "type": "object", "description": "Specifies resource override configuration for the project", "properties": { "fluid": { "type": "boolean" }, "functionDefaultRegions": { "description": "The regions to deploy Vercel Functions to for this project", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "maxLength": 4 } }, "functionDefaultTimeout": { "type": "number", "maximum": 900, "minimum": 1 }, "functionDefaultMemoryType": { "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "description": "Specifies whether Zero Config Failover is enabled for this project.", "oneOf": [ { "type": "boolean" } ] }, "elasticConcurrencyEnabled": { "type": "boolean" }, "buildMachineType": { "enum": [ "enhanced", "turbo", "standard" ] }, "buildMachineSelection": { "enum": [ "elastic", "fixed" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean" }, "buildQueue": { "type": "object", "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } } }, "enableFunctionsBeta": { "type": "boolean" } }, "additionalProperties": false } }, "required": [ "name" ], "type": "object" } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.createProject({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"a-project-name\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": { "integrations": { "items": { "properties": { "installationId": { "type": "string", "description": "The integration installation ID.", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "resources": { "items": { "properties": { "externalResourceId": { "type": "string" } }, "required": [ "externalResourceId" ], "type": "object", "description": "The list of the installation resources connected to the project." }, "type": "array", "description": "The list of the installation resources connected to the project." } }, "required": [ "installationId" ], "type": "object", "description": "Integration installation enabled on the project." }, "type": "array" }, "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": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "production", "preview" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "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 * * *" }, "source": { "type": "string", "enum": [ "api" ], "description": "The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json)." }, "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "dataCache": { "properties": { "userDisabled": { "type": "boolean", "enum": [ false, true ] }, "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "delegatedProtection": { "nullable": true, "type": "object" }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "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" ] } ] }, "type": { "type": "string", "enum": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "customEnvironments": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "services", "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "mastra", null ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "jobs": { "properties": { "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "typecheck": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" } }, "type": "object" }, "latestDeployments": { "items": { "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "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." }, "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "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-custom-host" ] }, "host": { "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "routeObservabilityToThisProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether observability data should be routed to this microfrontend project or a root project." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "enum": [ false, true ], "description": "Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "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" }, "passwordProtection": { "nullable": true, "type": "object" }, "productionDeploymentsFastLane": { "type": "boolean", "enum": [ false, true ] }, "publicSource": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollbackDescription": { "properties": { "userId": { "type": "string", "description": "The user who rolled back the project." }, "username": { "type": "string", "description": "The username of the user who rolled back the project." }, "description": { "type": "string", "description": "User-supplied explanation of why they rolled back the project. Limited to 250 characters." }, "createdAt": { "type": "number", "description": "Timestamp of when the rollback was requested." } }, "required": [ "createdAt", "description", "userId", "username" ], "type": "object", "description": "Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback." }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "defaultResourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "skewProtectionBoundaryAt": { "type": "number" }, "skewProtectionMaxAge": { "type": "number" }, "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "staticIps": { "properties": { "builds": { "type": "boolean", "enum": [ false, true ] }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "regions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "builds", "enabled", "regions" ], "type": "object" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "enablePreviewFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "enableProductionFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "permissions": { "properties": { "oauth2Connection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organization": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "user": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userPreference": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAuthn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "accessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "agent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alerts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alertRules": { "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" }, "apiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyAiGateway": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oauth2Application": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallationRequest": { "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" }, "billingRefund": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingTaxId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blob": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blobStoreTokenSet": { "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" }, "ciInvocations": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciLogs": { "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" }, "connexClient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClientProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachineDefault": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheBillingSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "defaultDeploymentProtection": { "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" }, "drain": { "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" }, "endpointVerification": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "fileUpload": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "flagsExplorerSubscription": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "gitRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "imageOptimizationNewPrice": { "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" }, "integrationConfigurationProjects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationRole": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationDeploymentAction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResource": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceReplCommand": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceSecrets": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationSSOSession": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationVercelConfigurationOverride": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationPullRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ipBlocking": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "jobGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logDrain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceBillingData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationEdgeConfigData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInstallationMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "Monitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringChart": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringQuery": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationCustomerBudget": { "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" }, "notificationPreferences": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationStatementOfReasons": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationUsageAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityFunnel": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityNotebook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "openTelemetryEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ownEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtectionInvoiceItem": { "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" }, "postgresStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "previewDeploymentSuffix": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateCloudAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "proTrialOnboarding": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "rateLimit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redis": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redisStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "remoteCaching": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "repository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "samlConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "secret": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sensitiveEnvironmentVariablePolicy": { "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" }, "storeIsLocked": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTokenSetSensitive": { "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" }, "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" }, "teamInviteLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamJoin": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMemberMfaStatus": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMicrofrontends": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembershipDisconnectSAML": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamTokenInvalidation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "token": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "toolbarComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usageCycle": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vpcPeeringConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalyticsPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook-event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "bulkRedirects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachine": { "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" }, "deploymentBuildLogs": { "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" }, "deploymentV0": { "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" }, "edgeCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "environments": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "job": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logsPreset": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandBuild": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandConcurrency": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "optionsAllowlist": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateLinkEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "productionAliasProtectionBypass": { "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" }, "projectAnalyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheckRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDelegatedProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentExpiration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentHook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentProtectionStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEvent": { "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" }, "projectFlagsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFromV0": { "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" }, "projectOIDCToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectPermissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRollingRelease": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRoutes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTier": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferOut": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "pageIntegrity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "seawallConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityPlusConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "shareableLinkStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarConnection": { "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" }, "trustedSources": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "v0Chat": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" } }, "type": "object" }, "lastRollbackTarget": { "nullable": true, "type": "object" }, "lastAliasRequest": { "nullable": true, "properties": { "fromDeploymentId": { "nullable": true, "type": "string" }, "toDeploymentId": { "type": "string" }, "fromRollingReleaseId": { "type": "string", "description": "If rolling back from a rolling release, fromDeploymentId captures the \"base\" of that rolling release, and fromRollingReleaseId captures the \"target\" of that rolling release." }, "jobStatus": { "type": "string", "enum": [ "succeeded", "failed", "skipped", "pending", "in-progress" ] }, "requestedAt": { "type": "number" }, "type": { "type": "string", "enum": [ "promote", "rollback" ] } }, "required": [ "fromDeploymentId", "jobStatus", "requestedAt", "toDeploymentId", "type" ], "type": "object" }, "protectionBypass": { "additionalProperties": { "oneOf": [ { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "integration-automation-bypass" ] }, "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "createdAt", "createdBy", "integrationId", "scope" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "automation-bypass" ] }, "isEnvVar": { "type": "boolean", "enum": [ false, true ], "description": "When there was only one bypass, it was automatically set as an env var on deployments. With multiple bypasses, there is always one bypass that is selected as the default, and gets set as an env var on deployments. As this is a new field, undefined means that the bypass is the env var. If there are any automation bypasses, exactly one must be the env var." }, "note": { "type": "string", "description": "Optional note about the bypass to be displayed in the UI" } }, "required": [ "createdAt", "createdBy", "scope" ], "type": "object" } ] }, "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "trustedIps": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "addresses": { "items": { "properties": { "value": { "type": "string" }, "note": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "protectionMode": { "type": "string", "enum": [ "additional", "exclusive" ] } }, "required": [ "addresses", "deploymentType", "protectionMode" ], "type": "object" }, { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } }, "required": [ "deploymentType" ], "type": "object" } ] }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "enabled", "disabled" ], "description": "Whether the Vercel bot should automatically create GitHub deployments https://docs.github.com/en/rest/deployments/deployments#about-deployments NOTE: repository-dispatch events should be used instead" }, "disableRepositoryDispatchEvents": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should not automatically create GitHub repository-dispatch events on deployment events. https://vercel.com/docs/git/vercel-for-github#repository-dispatch-events" }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "concurrencyBucketName": { "type": "string" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "attackModeActiveUntil": { "nullable": true, "type": "number" }, "firewallConfigVersion": { "type": "number" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "team", "global" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "tier": { "type": "string" }, "flatRateTier": { "type": "string", "enum": [ "standard", "base", "advanced", "critical" ] }, "usageStatus": { "properties": { "kind": { "type": "string", "enum": [ "flat" ], "description": "Billing mode. Always 'flat' for flat-rate projects." }, "exceededAllowanceUntil": { "type": "number", "description": "Timestamp until which the project has exceeded its CDN allowance." }, "bypassThrottleUntil": { "type": "number", "description": "Timestamp until which throttling is bypassed (project pays list rates for overage)." } }, "required": [ "kind" ], "type": "object" }, "features": { "properties": { "webAnalytics": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "v0": { "type": "boolean", "enum": [ false, true ] }, "v0Created": { "type": "boolean", "enum": [ false, true ] }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" }, "hasDeployments": { "type": "boolean", "enum": [ false, true ] }, "dismissedToasts": { "items": { "properties": { "key": { "type": "string" }, "dismissedAt": { "type": "number" }, "action": { "type": "string", "enum": [ "delete", "cancel", "accept" ] }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "previousValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "currentValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "currentValue", "previousValue" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "action", "dismissedAt", "key", "value" ], "type": "object" }, "type": "array" }, "protectedSourcemaps": { "type": "boolean", "enum": [ false, true ] }, "tracing": { "properties": { "domains": { "type": "string" }, "ignorePaths": { "items": { "type": "string" }, "type": "array" }, "samplingRules": { "items": { "properties": { "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate" ], "type": "object" }, "type": "array" } }, "type": "object" } }, "required": [ "accountId", "defaultResourceConfig", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "inspect", "get" ] }, "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" } ] }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ] }, "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": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "production", "preview" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "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 * * *" }, "source": { "type": "string", "enum": [ "api" ], "description": "The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json)." }, "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "dataCache": { "properties": { "userDisabled": { "type": "boolean", "enum": [ false, true ] }, "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "delegatedProtection": { "nullable": true, "type": "object" }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "installCommand": { "nullable": true, "type": "string" }, "env": { "items": { "properties": { "target": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "production", "preview", "development" ] } ] }, "type": { "type": "string", "enum": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "customEnvironments": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "services", "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "mastra", null ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "jobs": { "properties": { "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "typecheck": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" } }, "type": "object" }, "latestDeployments": { "items": { "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "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." }, "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "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-custom-host" ] }, "host": { "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "routeObservabilityToThisProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether observability data should be routed to this microfrontend project or a root project." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "enum": [ false, true ], "description": "Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "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" }, "passwordProtection": { "nullable": true, "type": "object" }, "productionDeploymentsFastLane": { "type": "boolean", "enum": [ false, true ] }, "publicSource": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollbackDescription": { "properties": { "userId": { "type": "string", "description": "The user who rolled back the project." }, "username": { "type": "string", "description": "The username of the user who rolled back the project." }, "description": { "type": "string", "description": "User-supplied explanation of why they rolled back the project. Limited to 250 characters." }, "createdAt": { "type": "number", "description": "Timestamp of when the rollback was requested." } }, "required": [ "createdAt", "description", "userId", "username" ], "type": "object", "description": "Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback." }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "defaultResourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "skewProtectionBoundaryAt": { "type": "number" }, "skewProtectionMaxAge": { "type": "number" }, "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "staticIps": { "properties": { "builds": { "type": "boolean", "enum": [ false, true ] }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "regions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "builds", "enabled", "regions" ], "type": "object" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "enablePreviewFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "enableProductionFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "permissions": { "properties": { "oauth2Connection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organization": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "user": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userPreference": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAuthn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "accessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "agent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alerts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alertRules": { "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" }, "apiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyAiGateway": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oauth2Application": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallationRequest": { "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" }, "billingRefund": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingTaxId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blob": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blobStoreTokenSet": { "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" }, "ciInvocations": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciLogs": { "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" }, "connexClient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClientProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachineDefault": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheBillingSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "defaultDeploymentProtection": { "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" }, "drain": { "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" }, "endpointVerification": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "fileUpload": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "flagsExplorerSubscription": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "gitRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "imageOptimizationNewPrice": { "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" }, "integrationConfigurationProjects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationRole": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationDeploymentAction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResource": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceReplCommand": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceSecrets": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationSSOSession": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationVercelConfigurationOverride": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationPullRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ipBlocking": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "jobGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logDrain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceBillingData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationEdgeConfigData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInstallationMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "Monitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringChart": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringQuery": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationCustomerBudget": { "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" }, "notificationPreferences": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationStatementOfReasons": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationUsageAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityFunnel": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityNotebook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "openTelemetryEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ownEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtectionInvoiceItem": { "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" }, "postgresStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "previewDeploymentSuffix": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateCloudAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "proTrialOnboarding": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "rateLimit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redis": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redisStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "remoteCaching": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "repository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "samlConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "secret": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sensitiveEnvironmentVariablePolicy": { "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" }, "storeIsLocked": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTokenSetSensitive": { "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" }, "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" }, "teamInviteLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamJoin": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMemberMfaStatus": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMicrofrontends": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembershipDisconnectSAML": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamTokenInvalidation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "token": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "toolbarComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usageCycle": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vpcPeeringConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalyticsPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook-event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "bulkRedirects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachine": { "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" }, "deploymentBuildLogs": { "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" }, "deploymentV0": { "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" }, "edgeCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "environments": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "job": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logsPreset": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandBuild": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandConcurrency": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "optionsAllowlist": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateLinkEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "productionAliasProtectionBypass": { "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" }, "projectAnalyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheckRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDelegatedProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentExpiration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentHook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentProtectionStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEvent": { "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" }, "projectFlagsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFromV0": { "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" }, "projectOIDCToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectPermissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRollingRelease": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRoutes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTier": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferOut": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "pageIntegrity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "seawallConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityPlusConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "shareableLinkStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarConnection": { "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" }, "trustedSources": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "v0Chat": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" } }, "type": "object" }, "lastRollbackTarget": { "nullable": true, "type": "object" }, "lastAliasRequest": { "nullable": true, "properties": { "fromDeploymentId": { "nullable": true, "type": "string" }, "toDeploymentId": { "type": "string" }, "fromRollingReleaseId": { "type": "string", "description": "If rolling back from a rolling release, fromDeploymentId captures the \"base\" of that rolling release, and fromRollingReleaseId captures the \"target\" of that rolling release." }, "jobStatus": { "type": "string", "enum": [ "succeeded", "failed", "skipped", "pending", "in-progress" ] }, "requestedAt": { "type": "number" }, "type": { "type": "string", "enum": [ "promote", "rollback" ] } }, "required": [ "fromDeploymentId", "jobStatus", "requestedAt", "toDeploymentId", "type" ], "type": "object" }, "protectionBypass": { "additionalProperties": { "oneOf": [ { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "integration-automation-bypass" ] }, "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "createdAt", "createdBy", "integrationId", "scope" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "automation-bypass" ] }, "isEnvVar": { "type": "boolean", "enum": [ false, true ], "description": "When there was only one bypass, it was automatically set as an env var on deployments. With multiple bypasses, there is always one bypass that is selected as the default, and gets set as an env var on deployments. As this is a new field, undefined means that the bypass is the env var. If there are any automation bypasses, exactly one must be the env var." }, "note": { "type": "string", "description": "Optional note about the bypass to be displayed in the UI" } }, "required": [ "createdAt", "createdBy", "scope" ], "type": "object" } ] }, "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "trustedIps": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "addresses": { "items": { "properties": { "value": { "type": "string" }, "note": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "protectionMode": { "type": "string", "enum": [ "additional", "exclusive" ] } }, "required": [ "addresses", "deploymentType", "protectionMode" ], "type": "object" }, { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } }, "required": [ "deploymentType" ], "type": "object" } ] }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "enabled", "disabled" ], "description": "Whether the Vercel bot should automatically create GitHub deployments https://docs.github.com/en/rest/deployments/deployments#about-deployments NOTE: repository-dispatch events should be used instead" }, "disableRepositoryDispatchEvents": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should not automatically create GitHub repository-dispatch events on deployment events. https://vercel.com/docs/git/vercel-for-github#repository-dispatch-events" }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "concurrencyBucketName": { "type": "string" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "attackModeActiveUntil": { "nullable": true, "type": "number" }, "firewallConfigVersion": { "type": "number" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "team", "global" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "tier": { "type": "string" }, "flatRateTier": { "type": "string", "enum": [ "standard", "base", "advanced", "critical" ] }, "usageStatus": { "properties": { "kind": { "type": "string", "enum": [ "flat" ], "description": "Billing mode. Always 'flat' for flat-rate projects." }, "exceededAllowanceUntil": { "type": "number", "description": "Timestamp until which the project has exceeded its CDN allowance." }, "bypassThrottleUntil": { "type": "number", "description": "Timestamp until which throttling is bypassed (project pays list rates for overage)." } }, "required": [ "kind" ], "type": "object" }, "features": { "properties": { "webAnalytics": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "v0": { "type": "boolean", "enum": [ false, true ] }, "v0Created": { "type": "boolean", "enum": [ false, true ] }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" }, "hasDeployments": { "type": "boolean", "enum": [ false, true ] }, "dismissedToasts": { "items": { "properties": { "key": { "type": "string" }, "dismissedAt": { "type": "number" }, "action": { "type": "string", "enum": [ "delete", "cancel", "accept" ] }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "previousValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "currentValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "currentValue", "previousValue" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "action", "dismissedAt", "key", "value" ], "type": "object" }, "type": "array" }, "protectedSourcemaps": { "type": "boolean", "enum": [ false, true ] }, "tracing": { "properties": { "domains": { "type": "string" }, "ignorePaths": { "items": { "type": "string" }, "type": "array" }, "samplingRules": { "items": { "properties": { "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate" ], "type": "object" }, "type": "array" } }, "type": "object" } }, "required": [ "accountId", "defaultResourceConfig", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig" ], "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": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated\nPro customers are allowed to deploy Serverless Functions to up to `proMaxRegions` regions, or if the project was created before the limit was introduced.\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 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" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "rename" ], "bodyArguments": [ "name" ] }, "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" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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, "services", "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "mastra" ], "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" }, "protectedSourcemaps": { "description": "Specifies whether sourcemaps are protected and require authentication to access.", "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 }, "nodeVersion": { "enum": [ "24.x", "22.x", "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 }, "previewDeploymentsDisabled": { "description": "Specifies whether preview deployments are disabled for this project.", "type": "boolean", "nullable": true }, "previewDeploymentSuffix": { "description": "Custom domain suffix for preview deployments. Takes precedence over team-level suffix. Must be a domain owned by the team.", "type": "string", "maxLength": 253, "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 }, "resourceConfig": { "properties": { "buildMachineType": { "enum": [ null, "enhanced", "turbo", "standard", "elastic" ] }, "buildQueue": { "type": "object", "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } } }, "fluid": { "type": "boolean" }, "functionDefaultRegions": { "description": "The regions to deploy Vercel Functions to for this project", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "maxLength": 4 } }, "functionDefaultTimeout": { "type": "number", "maximum": 900, "minimum": 1 }, "functionDefaultMemoryType": { "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "description": "Specifies whether Zero Config Failover is enabled for this project.", "oneOf": [ { "type": "boolean" } ] }, "elasticConcurrencyEnabled": { "type": "boolean" }, "buildMachineSelection": { "enum": [ "elastic", "fixed" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean" }, "enableFunctionsBeta": { "type": "boolean" } }, "type": "object", "description": "Specifies resource override configuration for the project", "additionalProperties": false }, "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" }, "skewProtectionAllowedDomains": { "description": "Cross-site domains allowed to fetch skew-protected assets (hostnames, optionally with leading wildcard like *.example.com).", "type": "array", "items": { "type": "string", "maxLength": 254 }, "maxItems": 12 }, "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" }, "enableExternalRewriteCaching": { "description": "Specifies whether external rewrite caching is enabled for this project.", "type": "boolean" }, "staticIps": { "additionalProperties": false, "description": "Manage Static IPs for this project", "properties": { "enabled": { "description": "Opt-in to Static IPs for this project", "type": "boolean" } }, "required": [ "enabled" ], "type": "object" }, "tracing": { "description": "Tracing configuration for this project", "type": "object", "additionalProperties": false, "properties": { "domains": { "description": "Comma-separated list of drain endpoint domains", "type": "string" }, "ignorePaths": { "description": "Paths to ignore for tracing", "type": "array", "items": { "type": "string" } }, "samplingRules": { "description": "Sampling rules for trace collection", "type": "array", "maxItems": 10, "items": { "type": "object", "additionalProperties": false, "required": [ "rate" ], "properties": { "rate": { "type": "number", "minimum": 0, "maximum": 1, "description": "Sampling rate from 0 to 1" }, "env": { "type": "string", "enum": [ "production", "preview" ], "description": "Environment to apply sampling to" }, "requestPath": { "type": "string", "description": "Request path prefix to apply the sampling rule to" } } } } }, "nullable": true }, "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.", "deprecated": true, "type": "boolean", "default": true }, "issuerMode": { "description": "team: `https://oidc.vercel.com/[team_slug]` global: `https://oidc.vercel.com`", "type": "string", "enum": [ "team", "global" ], "default": "team" } } }, "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", "all_except_custom_domains" ], "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", "all_except_custom_domains" ], "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", "all_except_custom_domains" ], "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 }, "trustedSources": { "type": "object", "additionalProperties": false, "description": "Deployment Protection Trusted Sources", "properties": { "projects": { "type": "object", "maxProperties": 100, "additionalProperties": { "type": "object", "additionalProperties": false, "properties": { "label": { "type": "string", "maxLength": 100, "description": "The label or description of the trusted source" }, "customAllow": { "type": "array", "minItems": 1, "maxItems": 20, "items": { "type": "object", "additionalProperties": false, "required": [ "from", "to" ], "properties": { "to": { "type": "object", "additionalProperties": false, "description": "A set of environments, expressed as explicit slugs, a named preset, or both. At least one of `slugs` or `preset` must be set.", "anyOf": [ { "required": [ "slugs" ] }, { "required": [ "preset" ] } ], "properties": { "slugs": { "type": "array", "minItems": 1, "maxItems": 10, "uniqueItems": true, "items": { "type": "string", "maxLength": 64, "description": "A system environment (\\\"production\\\", \\\"preview\\\", or \\\"development\\\") or a custom environment slug" } }, "preset": { "type": "string", "enum": [ "all-custom" ] } } }, "from": { "type": "object", "additionalProperties": false, "description": "A set of environments, expressed as explicit slugs, a named preset, or both. At least one of `slugs` or `preset` must be set.", "anyOf": [ { "required": [ "slugs" ] }, { "required": [ "preset" ] } ], "properties": { "slugs": { "type": "array", "minItems": 1, "maxItems": 10, "uniqueItems": true, "items": { "type": "string", "maxLength": 64, "description": "A system environment (\\\"production\\\", \\\"preview\\\", or \\\"development\\\") or a custom environment slug" } }, "preset": { "type": "string", "enum": [ "all-custom" ] } } } } }, "description": "Optional overrides for the default same-env-by-slug matching." } } } }, "oidcProviders": { "type": "object", "maxProperties": 50, "additionalProperties": { "type": "array", "minItems": 1, "maxItems": 10, "items": { "type": "object", "additionalProperties": false, "required": [ "claims", "to" ], "properties": { "label": { "type": "string", "maxLength": 100, "description": "The label or description of the trusted source" }, "to": { "type": "object", "additionalProperties": false, "description": "A set of environments, expressed as explicit slugs, a named preset, or both. At least one of `slugs` or `preset` must be set.", "anyOf": [ { "required": [ "slugs" ] }, { "required": [ "preset" ] } ], "properties": { "slugs": { "type": "array", "minItems": 1, "maxItems": 10, "uniqueItems": true, "items": { "type": "string", "maxLength": 64, "description": "A system environment (\\\"production\\\", \\\"preview\\\", or \\\"development\\\") or a custom environment slug" } }, "preset": { "type": "string", "enum": [ "all-custom" ] } } }, "claims": { "type": "object", "minProperties": 1, "maxProperties": 20, "additionalProperties": { "type": "array", "minItems": 1, "maxItems": 20, "items": { "type": "string", "maxLength": 256 } } } } } } } }, "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 }, "connectConfigurations": { "type": "array", "description": "The list of connections from project environment to Secure Compute network", "items": { "additionalProperties": false, "properties": { "envId": { "type": "string", "description": "The ID of the environment" }, "connectConfigurationId": { "type": "string", "description": "The ID of the Secure Compute network" }, "passive": { "type": "boolean", "description": "Whether the configuration should be passive, meaning builds will not run there and only passive Serverless Functions will be deployed" }, "buildsEnabled": { "type": "boolean", "description": "Flag saying if project builds should use Secure Compute" } }, "required": [ "envId", "connectConfigurationId", "passive", "buildsEnabled" ], "oneOf": [ { "type": "object" } ] }, "minItems": 1, "nullable": true }, "dismissedToasts": { "description": "An array of objects representing a Dismissed Toast in regards to a Project. Objects are either merged with existing toasts (on key match), or added to the `dimissedToasts` array.`", "type": "array", "minItems": 0, "maxItems": 50, "items": { "type": "object", "additionalProperties": false, "required": [ "key", "dismissedAt", "action", "value" ], "properties": { "key": { "type": "string", "description": "unique identifier for the dismissed toast" }, "dismissedAt": { "type": "number", "description": "unix timestamp representing the time the toast was dimissed" }, "action": { "enum": [ "cancel", "accept", "delete" ], "description": "Whether the toast was dismissed, the action was accepted, or the dismissal with this key should be removed" }, "value": { "oneOf": [ { "type": "string" }, { "type": "string" }, { "type": "boolean" }, { "type": "number" }, { "type": "object", "additionalProperties": false, "required": [ "previousValue", "currentValue" ], "properties": { "previousValue": { "oneOf": [ { "type": "number" }, { "type": "boolean" }, { "type": "string" } ] }, "currentValue": { "oneOf": [ { "type": "number" }, { "type": "boolean" }, { "type": "string" } ] } } } ] } } } } }, "type": "object" } } }, "required": true }, "x-speakeasy-usage-example": { "title": "Update an existing project", "description": "Update the fields of a project using either its name or id.", "position": 2 }, "x-codeSamples": [ { "lang": "typescript", "label": "updateProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.updateProject({\n idOrName: \"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"a-project-name\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "updateProject", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.UpdateProject(ctx, \"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\", nil, nil, &operations.UpdateProjectRequestBody{\n Name: vercel.String(\"a-project-name\"),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "409": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "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" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.projects.deleteProject({\n idOrName: \"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "deleteProject", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.DeleteProject(ctx, \"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/v1/projects/{idOrName}/shared-connect-links": { "patch": { "description": "Allows configuring Static IPs for a project", "operationId": "updateStaticIps", "security": [ { "bearerToken": [] } ], "summary": "Configures Static IPs for a project", "tags": [ "connect", "static-ips" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "production", "preview" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" } } } }, "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": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "500": { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "anyOf": [ { "required": [ "builds" ] }, { "required": [ "regions" ] } ], "properties": { "builds": { "type": "boolean", "description": "Whether to use Static IPs for builds." }, "regions": { "type": "array", "items": { "type": "string", "maxLength": 4, "description": "The region in which to enable Static IPs.", "example": "iad1" }, "minItems": 0, "maxItems": 3, "uniqueItems": true } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateStaticIps", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.updateStaticIps({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n regions: [\n \"iad1\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "typescript", "label": "updateStaticIps", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.staticIps.updateStaticIps({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n regions: [\n \"iad1\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v9/projects/{idOrName}/custom-environments": { "post": { "description": "Creates a custom environment for the current project. Cannot be named 'Production' or 'Preview'.", "operationId": "createCustomEnvironment", "security": [ { "bearerToken": [] } ], "summary": "Create a custom environment for the current project.", "tags": [ "environment" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" } } } }, "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": "The request is not authorized." }, "402": { "description": "The 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": "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "slug": { "description": "The slug of the custom environment to create.", "type": "string", "maxLength": 32 }, "description": { "description": "Description of the custom environment. This is optional.", "type": "string", "maxLength": 256 }, "branchMatcher": { "required": [ "type", "pattern" ], "description": "How we want to determine a matching branch. This is optional.", "type": "object", "properties": { "type": { "description": "Type of matcher. One of \"equals\", \"startsWith\", or \"endsWith\".", "enum": [ "equals", "startsWith", "endsWith" ] }, "pattern": { "description": "Git branch name or portion thereof.", "type": "string", "maxLength": 100 } } }, "copyEnvVarsFrom": { "description": "Where to copy environment variables from. This is optional.", "type": "string" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createCustomEnvironment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.environment.createCustomEnvironment({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "description": "Retrieve custom environments for the project. Must not be named 'Production' or 'Preview'.", "operationId": "getProjectsByIdOrNameCustomEnvironments", "security": [ { "bearerToken": [] } ], "summary": "Retrieve custom environments", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "accountLimit": { "properties": { "total": { "type": "number" } }, "required": [ "total" ], "type": "object", "description": "The maximum number of custom environments allowed either by the team's plan type or a custom override." }, "environments": { "items": { "properties": { "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object" }, "type": "array" } }, "required": [ "accountLimit", "environments" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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": "gitBranch", "description": "Fetch custom environments for a specific git branch", "in": "query", "required": false, "schema": { "description": "Fetch custom environments for a specific git branch", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getProjectsByIdOrNameCustomEnvironments", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.environment.getProjectsByIdOrNameCustomEnvironments({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v9/projects/{idOrName}/custom-environments/{environmentSlugOrId}": { "get": { "description": "Retrieve a custom environment for the project. Must not be named 'Production' or 'Preview'.", "operationId": "getCustomEnvironment", "security": [ { "bearerToken": [] } ], "summary": "Retrieve a custom environment", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "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" } }, { "name": "environmentSlugOrId", "description": "The unique custom environment identifier within the project", "in": "path", "required": true, "schema": { "description": "The unique custom environment identifier within the project", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getCustomEnvironment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.environment.getCustomEnvironment({\n idOrName: \"\",\n environmentSlugOrId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update a custom environment for the project. Must not be named 'Production' or 'Preview'.", "operationId": "updateCustomEnvironment", "security": [ { "bearerToken": [] } ], "summary": "Update a custom environment", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" } } } }, "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": "The request is not authorized." }, "402": { "description": "The 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": "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": "environmentSlugOrId", "description": "The unique custom environment identifier within the project", "in": "path", "required": true, "schema": { "description": "The unique custom environment identifier within the project", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "slug": { "description": "The slug of the custom environment.", "type": "string", "maxLength": 32 }, "description": { "description": "Description of the custom environment. This is optional.", "type": "string", "maxLength": 256 }, "branchMatcher": { "required": [ "type", "pattern" ], "description": "How we want to determine a matching branch. This is optional.", "type": "object", "properties": { "type": { "description": "Type of matcher. One of \"equals\", \"startsWith\", or \"endsWith\".", "enum": [ "equals", "startsWith", "endsWith" ] }, "pattern": { "description": "Git branch name or portion thereof.", "type": "string", "maxLength": 100 } }, "nullable": true } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateCustomEnvironment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.environment.updateCustomEnvironment({\n idOrName: \"\",\n environmentSlugOrId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Remove a custom environment for the project. Must not be named 'Production' or 'Preview'.", "operationId": "removeCustomEnvironment", "security": [ { "bearerToken": [] } ], "summary": "Remove a custom environment", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" } } } }, "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": "The request is not authorized." }, "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": "environmentSlugOrId", "description": "The unique custom environment identifier within the project", "in": "path", "required": true, "schema": { "description": "The unique custom environment identifier within the project", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "deleteUnassignedEnvironmentVariables": { "description": "Delete Environment Variables that are not assigned to any environments.", "type": "boolean" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "removeCustomEnvironment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.environment.removeCustomEnvironment({\n idOrName: \"\",\n environmentSlugOrId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": { "oneOf": [ { "properties": { "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "count": { "type": "number" }, "next": { "nullable": true, "type": "number" }, "prev": { "nullable": true, "type": "number" } }, "required": [ "count", "next", "prev" ], "type": "object" } }, "required": [ "domains", "pagination" ], "type": "object" }, { "properties": { "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "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": "The request is not authorized." }, "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" } ] } }, { "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": "customEnvironmentId", "description": "The unique custom environment identifier within the project", "in": "query", "required": false, "schema": { "description": "The unique custom environment identifier within the project", "type": "string", "example": "env_123abc4567" } }, { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getProjectDomains", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.getProjectDomains({\n idOrName: \"\",\n customEnvironmentId: \"env_123abc4567\",\n redirect: \"example.com\",\n limit: 20,\n since: 1609499532000,\n until: 1612264332000,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getProjectDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.getProjectDomain({\n idOrName: \"\",\n domain: \"www.example.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getProjectDomain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.GetProjectDomain(ctx, \"\", \"www.example.com\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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" } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateProjectDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.updateProjectDomain({\n idOrName: \"\",\n domain: \"www.example.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n gitBranch: null,\n redirect: \"foobar.com\",\n redirectStatusCode: 307,\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "updateProjectDomain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.UpdateProjectDomain(ctx, operations.UpdateProjectDomainRequest{\n IDOrName: \"\",\n Domain: \"www.example.com\",\n RequestBody: &operations.UpdateProjectDomainRequestBody{\n GitBranch: nil,\n Redirect: vercel.String(\"foobar.com\"),\n RedirectStatusCode: operations.RedirectStatusCodeThreeHundredAndSeven.ToPointer(),\n },\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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 body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "removeRedirects": { "type": "boolean", "description": "Whether to remove all domains from this project that redirect to the domain being removed." } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "removeProjectDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.removeProjectDomain({\n idOrName: \"\",\n domain: \"www.example.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "removeProjectDomain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.RemoveProjectDomain(ctx, \"\", \"www.example.com\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "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": "The request is not authorized." }, "402": { "description": "The 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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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 }, "customEnvironmentId": { "description": "The unique custom environment identifier within the project", "type": "string" }, "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" } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "addProjectDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.addProjectDomain({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"www.example.com\",\n gitBranch: null,\n redirect: \"foobar.com\",\n redirectStatusCode: 307,\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "addProjectDomain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.AddProjectDomain(ctx, \"\", nil, nil, &operations.AddProjectDomainRequestBody{\n Name: \"www.example.com\",\n GitBranch: nil,\n Redirect: vercel.String(\"foobar.com\"),\n RedirectStatusCode: operations.AddProjectDomainRedirectStatusCodeThreeHundredAndSeven.ToPointer(),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/projects/{idOrName}/domains/{domain}/move": { "post": { "description": "Move one project's domain to another project. Also allows the move of all redirects pointed to that domain in the same project.", "operationId": "moveProjectDomain", "security": [ { "bearerToken": [] } ], "summary": "Move 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": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "required": [ "projectId" ], "properties": { "projectId": { "description": "The unique target project identifier", "example": "prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA", "oneOf": [ { "type": "string" } ] }, "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" } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "moveProjectDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.moveProjectDomain({\n idOrName: \"\",\n domain: \"www.example.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n projectId: \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\",\n gitBranch: null,\n redirect: \"foobar.com\",\n redirectStatusCode: 307,\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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." } }, "required": [ "apexName", "name", "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "verifyProjectDomain", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.verifyProjectDomain({\n idOrName: \"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n domain: \"example.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "verifyProjectDomain", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.VerifyProjectDomain(ctx, \"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\", \"example.com\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v10/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": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" }, "system": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "key", "type", "value" ], "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": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" }, "system": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "key", "type", "value" ], "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": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" }, "system": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "hiddenProductionEnvCount": { "type": "number" } }, "required": [ "envs", "hiddenProductionEnvCount" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "ls", "list" ] }, "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" }, "x-vercel-cli": { "kind": "argument" } }, { "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" } }, { "name": "customEnvironmentId", "description": "The unique custom environment identifier within the project", "in": "query", "required": false, "schema": { "type": "string", "description": "The unique custom environment identifier within the project", "example": "env_123abc4567" } }, { "name": "customEnvironmentSlug", "description": "The custom environment slug (name) within the project", "in": "query", "required": false, "schema": { "type": "string", "description": "The custom environment slug (name) within the project", "example": "my-custom-env" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "filterProjectEnvs", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.filterProjectEnvs({\n idOrName: \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\",\n gitBranch: \"feature-1\",\n decrypt: \"true\",\n source: \"vercel-cli:pull\",\n customEnvironmentId: \"env_123abc4567\",\n customEnvironmentSlug: \"my-custom-env\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Create one or 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. If you include `upsert=true` as a query parameter, a new environment variable will not be created if it already exists but, the existing variable's value will be updated.", "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" ] }, "type": "array" }, { "type": "string", "enum": [ "production", "preview", "development" ] } ] }, "type": { "type": "string", "enum": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" }, "system": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "key", "type", "value" ], "type": "object" }, { "items": { "properties": { "target": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "production", "preview", "development" ] } ] }, "type": { "type": "string", "enum": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" }, "system": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "key", "type", "value" ], "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" ] }, "type": "array" } ] }, "gitBranch": { "type": "string" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "production", "preview", "development", "preview", "development" ] }, "type": "array" }, { "type": "string", "enum": [ "production", "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.\nThe environment variable coudn't be created because an ongoing update env update is already happening\nThe environment variable coudn't be created because project document is too large" }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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" }, "404": { "description": "" }, "409": { "description": "The project is being transfered and creating an environment variable is not possible" }, "429": { "description": "" }, "500": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "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" }, "x-vercel-cli": { "kind": "argument" } }, { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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", "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 }, "customEnvironmentIds": { "type": "array", "description": "The custom environment IDs associated with the environment variable", "items": { "type": "string", "example": "env_1234567890" } } } }, { "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", "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 }, "customEnvironmentIds": { "type": "array", "description": "The custom environment IDs associated with the environment variable", "items": { "type": "string", "example": "env_1234567890" } } } } } ] } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "createProjectEnv", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.createProjectEnv({\n idOrName: \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\",\n upsert: \"true\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n key: \"API_URL\",\n value: \"https://api.vercel.com\",\n type: \"plain\",\n target: [\n \"preview\",\n ],\n gitBranch: \"feature-1\",\n comment: \"database connection string for production\",\n customEnvironmentIds: [\n \"env_1234567890\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "createProjectEnv", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.CreateProjectEnv(ctx, operations.CreateProjectEnvRequest{\n IDOrName: \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\",\n Upsert: vercel.String(\"true\"),\n RequestBody: vercel.Pointer(operations.CreateCreateProjectEnvRequestBodyCreateProjectEnvRequestBody1(\n operations.CreateCreateProjectEnvRequestBody1CreateProjectEnv12(\n operations.CreateProjectEnv12{\n Key: \"API_URL\",\n Value: \"https://api.vercel.com\",\n Type: operations.CreateProjectEnv1TypePlain,\n Target: []operations.CreateProjectEnv1Target{\n operations.CreateProjectEnv1TargetPreview,\n },\n GitBranch: vercel.String(\"feature-1\"),\n Comment: vercel.String(\"database connection string for production\"),\n },\n ),\n )),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "production", "preview", "development", "preview", "development" ] }, "type": "array" }, { "type": "string", "enum": [ "production", "preview", "development" ] } ] }, "key": { "type": "string" }, "gitBranch": { "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "configurationId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "decrypted", "key", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "value": { "type": "string" }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "production", "preview", "development" ] }, "type": "array" }, { "type": "string", "enum": [ "production", "preview", "development" ] } ] }, "key": { "type": "string" }, "gitBranch": { "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "configurationId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "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" }, "x-vercel-cli": { "kind": "argument" } }, { "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" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getProjectEnv", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.getProjectEnv({\n idOrName: \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\",\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getProjectEnv", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.GetProjectEnv(ctx, \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\", \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] } }, "/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": { "type": { "type": "string", "enum": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "value": { "type": "string" }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "production", "preview", "development", "preview", "development" ] }, "type": "array" }, { "type": "string", "enum": [ "production", "preview", "development" ] } ] }, "key": { "type": "string" }, "gitBranch": { "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "configurationId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, { "properties": { "system": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "value": { "type": "string" }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "production", "preview", "development", "preview", "development" ] }, "type": "array" }, { "type": "string", "enum": [ "production", "preview", "development" ] } ] }, "key": { "type": "string" }, "gitBranch": { "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "configurationId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "nullable": true, "properties": { "type": { "type": "string", "enum": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "value": { "type": "string" }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "production", "preview", "development", "preview", "development" ] }, "type": "array" }, { "type": "string", "enum": [ "production", "preview", "development" ] } ] }, "key": { "type": "string" }, "gitBranch": { "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "configurationId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "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" }, "x-vercel-cli": { "kind": "argument" } }, { "name": "id", "description": "The unique environment variable identifier", "in": "path", "required": true, "schema": { "description": "The unique environment variable identifier", "type": "string", "example": "XMbOEya1gUUO1ir4" }, "x-vercel-cli": { "kind": "argument" } }, { "name": "customEnvironmentId", "description": "The unique custom environment identifier within the project", "in": "query", "required": false, "schema": { "type": "string", "description": "The unique custom environment identifier within the project", "example": "env_123abc4567" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "removeProjectEnv", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.removeProjectEnv({\n idOrName: \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\",\n id: \"XMbOEya1gUUO1ir4\",\n customEnvironmentId: \"env_123abc4567\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "removeProjectEnv", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.RemoveProjectEnv(ctx, \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\", \"XMbOEya1gUUO1ir4\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] }, "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": { "nullable": true, "properties": { "type": { "type": "string", "enum": [ "secret", "system", "encrypted", "plain", "sensitive" ] }, "value": { "type": "string" }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "production", "preview", "development", "preview", "development" ] }, "type": "array" }, { "type": "string", "enum": [ "production", "preview", "development", "preview", "development" ] } ] }, "key": { "type": "string" }, "gitBranch": { "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "configurationId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "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.\nAt least one environment variable failed validation" }, "401": { "description": "The request is not authorized." }, "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" }, "429": { "description": "" }, "500": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "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" }, "x-vercel-cli": { "kind": "argument" } }, { "name": "id", "description": "The unique environment variable identifier", "in": "path", "required": true, "schema": { "description": "The unique environment variable identifier", "type": "string", "example": "XMbOEya1gUUO1ir4" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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", "encrypted", "plain", "sensitive" ], "example": "plain" }, "value": { "description": "The value of the environment variable", "type": "string", "example": "bkWIjbnxcvo78" }, "customEnvironmentIds": { "type": "array", "description": "The custom environments that the environment variable should be synced to", "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 } } } } }, "required": true }, "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "editProjectEnv", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.editProjectEnv({\n idOrName: \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\",\n id: \"XMbOEya1gUUO1ir4\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n key: \"GITHUB_APP_ID\",\n target: [\n \"preview\",\n ],\n gitBranch: \"feature-1\",\n type: \"plain\",\n value: \"bkWIjbnxcvo78\",\n customEnvironmentIds: [\n \"env_1234567890\",\n ],\n comment: \"database connection string for production\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "editProjectEnv", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.EditProjectEnv(ctx, operations.EditProjectEnvRequest{\n IDOrName: \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\",\n ID: \"XMbOEya1gUUO1ir4\",\n RequestBody: &operations.EditProjectEnvRequestBody{\n Key: vercel.String(\"GITHUB_APP_ID\"),\n Target: []operations.EditProjectEnvTarget{\n operations.EditProjectEnvTargetPreview,\n },\n GitBranch: vercel.String(\"feature-1\"),\n Type: operations.EditProjectEnvTypePlain.ToPointer(),\n Value: vercel.String(\"bkWIjbnxcvo78\"),\n CustomEnvironmentIds: []string{\n \"env_1234567890\",\n },\n Comment: vercel.String(\"database connection string for production\"),\n },\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] } }, "/v1/projects/{idOrName}/env": { "delete": { "description": "Delete multiple environment variables for a given project in a single batch operation.", "operationId": "batchRemoveProjectEnv", "security": [ { "bearerToken": [] } ], "summary": "Batch remove environment variables", "tags": [ "projects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "deleted": { "type": "number" }, "ids": { "items": { "type": "string" }, "type": "array" } }, "required": [ "deleted", "ids" ], "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": "The request is not authorized." }, "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", "example": "prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "ids" ], "properties": { "ids": { "description": "Array of environment variable IDs to delete", "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 1000 } }, "additionalProperties": false } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "batchRemoveProjectEnv", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.batchRemoveProjectEnv({\n idOrName: \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{idOrName}/rolling-release/billing": { "get": { "description": "Get the Rolling Releases billing status for a project. The team level billing status is used to determine if the project can be configured for rolling releases.", "operationId": "getRollingReleaseBillingStatus", "security": [ { "bearerToken": [] } ], "summary": "Get rolling release billing status", "tags": [ "rolling-release" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "availableSlots": { "type": "number", "enum": [ 0 ] }, "reason": { "type": "string", "enum": [ "plan_not_supported" ] }, "message": { "type": "string" } }, "required": [ "availableSlots", "message", "reason" ], "type": "object" }, { "properties": { "availableSlots": { "type": "string", "enum": [ "unlimited" ] }, "reason": { "type": "string", "enum": [ "unlimited_slots" ] }, "message": { "type": "string" } }, "required": [ "availableSlots", "message", "reason" ], "type": "object" }, { "properties": { "availableSlots": { "type": "number", "enum": [ 0 ] }, "reason": { "type": "string", "enum": [ "no_available_slots" ] }, "message": { "type": "string" }, "enabledProjects": { "items": { "type": "string" }, "type": "array" } }, "required": [ "availableSlots", "enabledProjects", "message", "reason" ], "type": "object" }, { "properties": { "availableSlots": { "type": "number" }, "reason": { "type": "string", "enum": [ "available_slots" ] }, "message": { "type": "string" } }, "required": [ "availableSlots", "message", "reason" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "idOrName", "description": "Project ID or project name (URL-encoded)", "in": "path", "required": true, "schema": { "description": "Project ID or project name (URL-encoded)", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getRollingReleaseBillingStatus", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.rollingRelease.getRollingReleaseBillingStatus({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{idOrName}/rolling-release/config": { "get": { "description": "Get the Rolling Releases configuration for a project. The project-level config is simply a template that will be used for any future rolling release, and not the configuration for any active rolling release.", "operationId": "getRollingReleaseConfig", "security": [ { "bearerToken": [] } ], "summary": "Get rolling release configuration", "tags": [ "rolling-release" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" } }, "required": [ "rollingRelease" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "idOrName", "description": "Project ID or project name (URL-encoded)", "in": "path", "required": true, "schema": { "description": "Project ID or project name (URL-encoded)", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getRollingReleaseConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.rollingRelease.getRollingReleaseConfig({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Disable Rolling Releases for a project means that future deployments will not undergo a rolling release. Changing the config never alters a rollout that's already in-flight—it only affects the next production deployment. If you want to also stop the current rollout, call this endpoint to disable the feature, and then call either the /complete or /abort endpoint.", "operationId": "deleteRollingReleaseConfig", "security": [ { "bearerToken": [] } ], "summary": "Delete rolling release configuration", "tags": [ "rolling-release" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "rollingRelease": { "nullable": true } }, "required": [ "rollingRelease" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "idOrName", "description": "Project ID or project name (URL-encoded)", "in": "path", "required": true, "schema": { "description": "Project ID or project name (URL-encoded)", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteRollingReleaseConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.rollingRelease.deleteRollingReleaseConfig({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update (or disable) Rolling Releases for a project. When disabling with the resolve-on-disable feature flag enabled, any active rolling release document is resolved using the disableRolloutAction parameter: \"abort\" to roll back (default), or \"complete\" to promote the canary to production. When enabling or updating config, changes only affect the next production deployment and do not alter a rollout that's already in-flight. Note: Enabling Rolling Releases automatically enables skew protection on the project with the default value if it wasn't configured already.", "operationId": "updateRollingReleaseConfig", "security": [ { "bearerToken": [] } ], "summary": "Update the rolling release settings for the project", "tags": [ "rolling-release" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "rollingRelease": { "nullable": true } }, "required": [ "rollingRelease" ], "type": "object" }, { "properties": { "rollingRelease": { "nullable": true, "properties": { "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "A stage object configured for a rolling release once a new deployment is triggered the first stage will be read in the proxy for first time visitors, and if a RNG < targetPercentage then it will serve the new deployment. Upon approval the next stage will be read, etc." }, "type": "array" } }, "type": "object" } }, "required": [ "rollingRelease" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "idOrName", "description": "Project ID or project name (URL-encoded)", "in": "path", "required": true, "schema": { "description": "Project ID or project name (URL-encoded)", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "updateRollingReleaseConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.rollingRelease.updateRollingReleaseConfig({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{idOrName}/rolling-release": { "get": { "description": "Return the Rolling Release for a project, regardless of whether the rollout is active, aborted, or completed. If the feature is enabled but no deployment has occurred yet, null will be returned.", "operationId": "getRollingRelease", "security": [ { "bearerToken": [] } ], "summary": "Get the active rolling release information for a project", "tags": [ "rolling-release" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "rollingRelease": { "nullable": true, "properties": { "state": { "type": "string", "enum": [ "ACTIVE", "COMPLETE", "ABORTED" ], "description": "The current state of the rolling release", "example": "ACTIVE" }, "substate": { "nullable": true, "type": "string", "enum": [ "PAUSED", null ], "description": "When set to `PAUSED`, the rollout is frozen at the current percentage until continued." }, "currentDeployment": { "nullable": true, "properties": { "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "readyStateAt": { "type": "number" }, "source": { "type": "string", "enum": [ "import", "api-trigger-git-deploy", "cli", "clone/repo", "git", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from", "example": "cli" }, "target": { "nullable": true, "type": "string", "enum": [ "staging", "production", null ], "description": "If defined, either `staging` if a staging alias in the format `..now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the \"preview\" deployment.", "example": null }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" } }, "required": [ "createdAt", "id", "name", "readyState", "url" ], "type": "object", "description": "The current deployment receiving production traffic", "example": { "id": "dpl_abc123", "name": "my-shop@main", "url": "my-shop.vercel.app", "target": "production", "source": "git", "createdAt": 1716206500000, "readyState": "READY", "readyStateAt": 1716206800000 } }, "canaryDeployment": { "nullable": true, "properties": { "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "readyStateAt": { "type": "number" }, "source": { "type": "string", "enum": [ "import", "api-trigger-git-deploy", "cli", "clone/repo", "git", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from", "example": "cli" }, "target": { "nullable": true, "type": "string", "enum": [ "staging", "production", null ], "description": "If defined, either `staging` if a staging alias in the format `..now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the \"preview\" deployment.", "example": null }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" } }, "required": [ "createdAt", "id", "name", "readyState", "url" ], "type": "object", "description": "The canary deployment being rolled out", "example": { "id": "dpl_def456", "name": "my-shop@9c7e2f4", "url": "9c7e2f4-my-shop.vercel.app", "target": "production", "source": "git", "createdAt": 1716210100000, "readyState": "READY", "readyStateAt": 1716210400000 } }, "queuedDeploymentId": { "nullable": true, "type": "string", "description": "The ID of a deployment queued for the next rolling release", "example": "dpl_ghi789" }, "advancementType": { "type": "string", "enum": [ "automatic", "manual-approval" ], "description": "The advancement type of the rolling release", "example": "manual-approval" }, "stages": { "items": { "properties": { "index": { "type": "number", "description": "The zero-based index of the stage", "example": 0 }, "isFinalStage": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage is the final stage (targetPercentage === 100)", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed" }, "duration": { "nullable": true, "type": "number", "description": "Duration in seconds for automatic advancement, null for manual stages or the final stage", "example": null }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "duration", "index", "isFinalStage", "requireApproval", "targetPercentage" ], "type": "object", "description": "All stages configured for this rolling release", "example": [ { "index": 0, "isFinalStage": false, "targetPercentage": 5, "requireApproval": true, "duration": null }, { "index": 1, "isFinalStage": false, "targetPercentage": 25, "requireApproval": true, "duration": null }, { "index": 2, "isFinalStage": false, "targetPercentage": 60, "requireApproval": true, "duration": null }, { "index": 3, "isFinalStage": true, "targetPercentage": 100, "requireApproval": false, "duration": null } ] }, "type": "array", "description": "All stages configured for this rolling release", "example": [ { "index": 0, "isFinalStage": false, "targetPercentage": 5, "requireApproval": true, "duration": null }, { "index": 1, "isFinalStage": false, "targetPercentage": 25, "requireApproval": true, "duration": null }, { "index": 2, "isFinalStage": false, "targetPercentage": 60, "requireApproval": true, "duration": null }, { "index": 3, "isFinalStage": true, "targetPercentage": 100, "requireApproval": false, "duration": null } ] }, "activeStage": { "nullable": true, "properties": { "index": { "type": "number", "description": "The zero-based index of the stage", "example": 0 }, "isFinalStage": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage is the final stage (targetPercentage === 100)", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed" }, "duration": { "nullable": true, "type": "number", "description": "Duration in seconds for automatic advancement, null for manual stages or the final stage", "example": null }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "duration", "index", "isFinalStage", "requireApproval", "targetPercentage" ], "type": "object", "description": "The currently active stage, null if the rollout is aborted", "example": { "index": 1, "isFinalStage": false, "targetPercentage": 25, "requireApproval": true, "duration": null } }, "nextStage": { "nullable": true, "properties": { "index": { "type": "number", "description": "The zero-based index of the stage", "example": 0 }, "isFinalStage": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage is the final stage (targetPercentage === 100)", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed" }, "duration": { "nullable": true, "type": "number", "description": "Duration in seconds for automatic advancement, null for manual stages or the final stage", "example": null }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "duration", "index", "isFinalStage", "requireApproval", "targetPercentage" ], "type": "object", "description": "The next stage to be activated, null if not in ACTIVE state", "example": { "index": 2, "isFinalStage": false, "targetPercentage": 60, "requireApproval": true, "duration": null } }, "startedAt": { "type": "number", "description": "Unix timestamp in milliseconds when the rolling release started", "example": 1716210500000 }, "updatedAt": { "type": "number", "description": "Unix timestamp in milliseconds when the rolling release was last updated", "example": 1716210600000 }, "currentCanaryPercentage": { "type": "number", "description": "When set (for example while {@link substate} is `PAUSED`), the canary traffic percentage persisted on the rollout document — use for dashboard display when linear shift is active." } }, "required": [ "activeStage", "advancementType", "canaryDeployment", "currentDeployment", "nextStage", "queuedDeploymentId", "stages", "startedAt", "state", "substate", "updatedAt" ], "type": "object", "description": "Rolling release information including configuration and document details, or null if no rolling release exists" } }, "required": [ "rollingRelease" ], "type": "object", "description": "The response format for rolling release endpoints that return rolling release information" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "idOrName", "description": "Project ID or project name (URL-encoded)", "in": "path", "required": true, "schema": { "description": "Project ID or project name (URL-encoded)", "type": "string" } }, { "name": "state", "description": "Filter by rolling release state", "in": "query", "required": false, "schema": { "description": "Filter by rolling release state", "type": "string", "enum": [ "ACTIVE", "COMPLETE", "ABORTED" ] } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getRollingRelease", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.rollingRelease.getRollingRelease({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{idOrName}/rolling-release/approve-stage": { "post": { "description": "Advance a rollout to the next stage. This is only needed when rolling releases is configured to require manual approval.", "operationId": "approveRollingReleaseStage", "security": [ { "bearerToken": [] } ], "summary": "Update the active rolling release to the next stage for a project", "tags": [ "rolling-release" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "rollingRelease": { "nullable": true, "properties": { "state": { "type": "string", "enum": [ "ACTIVE", "COMPLETE", "ABORTED" ], "description": "The current state of the rolling release", "example": "ACTIVE" }, "substate": { "nullable": true, "type": "string", "enum": [ "PAUSED", null ], "description": "When set to `PAUSED`, the rollout is frozen at the current percentage until continued." }, "currentDeployment": { "nullable": true, "properties": { "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "readyStateAt": { "type": "number" }, "source": { "type": "string", "enum": [ "import", "api-trigger-git-deploy", "cli", "clone/repo", "git", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from", "example": "cli" }, "target": { "nullable": true, "type": "string", "enum": [ "staging", "production", null ], "description": "If defined, either `staging` if a staging alias in the format `..now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the \"preview\" deployment.", "example": null }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" } }, "required": [ "createdAt", "id", "name", "readyState", "url" ], "type": "object", "description": "The current deployment receiving production traffic", "example": { "id": "dpl_abc123", "name": "my-shop@main", "url": "my-shop.vercel.app", "target": "production", "source": "git", "createdAt": 1716206500000, "readyState": "READY", "readyStateAt": 1716206800000 } }, "canaryDeployment": { "nullable": true, "properties": { "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "readyStateAt": { "type": "number" }, "source": { "type": "string", "enum": [ "import", "api-trigger-git-deploy", "cli", "clone/repo", "git", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from", "example": "cli" }, "target": { "nullable": true, "type": "string", "enum": [ "staging", "production", null ], "description": "If defined, either `staging` if a staging alias in the format `..now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the \"preview\" deployment.", "example": null }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" } }, "required": [ "createdAt", "id", "name", "readyState", "url" ], "type": "object", "description": "The canary deployment being rolled out", "example": { "id": "dpl_def456", "name": "my-shop@9c7e2f4", "url": "9c7e2f4-my-shop.vercel.app", "target": "production", "source": "git", "createdAt": 1716210100000, "readyState": "READY", "readyStateAt": 1716210400000 } }, "queuedDeploymentId": { "nullable": true, "type": "string", "description": "The ID of a deployment queued for the next rolling release", "example": "dpl_ghi789" }, "advancementType": { "type": "string", "enum": [ "automatic", "manual-approval" ], "description": "The advancement type of the rolling release", "example": "manual-approval" }, "stages": { "items": { "properties": { "index": { "type": "number", "description": "The zero-based index of the stage", "example": 0 }, "isFinalStage": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage is the final stage (targetPercentage === 100)", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed" }, "duration": { "nullable": true, "type": "number", "description": "Duration in seconds for automatic advancement, null for manual stages or the final stage", "example": null }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "duration", "index", "isFinalStage", "requireApproval", "targetPercentage" ], "type": "object", "description": "All stages configured for this rolling release", "example": [ { "index": 0, "isFinalStage": false, "targetPercentage": 5, "requireApproval": true, "duration": null }, { "index": 1, "isFinalStage": false, "targetPercentage": 25, "requireApproval": true, "duration": null }, { "index": 2, "isFinalStage": false, "targetPercentage": 60, "requireApproval": true, "duration": null }, { "index": 3, "isFinalStage": true, "targetPercentage": 100, "requireApproval": false, "duration": null } ] }, "type": "array", "description": "All stages configured for this rolling release", "example": [ { "index": 0, "isFinalStage": false, "targetPercentage": 5, "requireApproval": true, "duration": null }, { "index": 1, "isFinalStage": false, "targetPercentage": 25, "requireApproval": true, "duration": null }, { "index": 2, "isFinalStage": false, "targetPercentage": 60, "requireApproval": true, "duration": null }, { "index": 3, "isFinalStage": true, "targetPercentage": 100, "requireApproval": false, "duration": null } ] }, "activeStage": { "nullable": true, "properties": { "index": { "type": "number", "description": "The zero-based index of the stage", "example": 0 }, "isFinalStage": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage is the final stage (targetPercentage === 100)", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed" }, "duration": { "nullable": true, "type": "number", "description": "Duration in seconds for automatic advancement, null for manual stages or the final stage", "example": null }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "duration", "index", "isFinalStage", "requireApproval", "targetPercentage" ], "type": "object", "description": "The currently active stage, null if the rollout is aborted", "example": { "index": 1, "isFinalStage": false, "targetPercentage": 25, "requireApproval": true, "duration": null } }, "nextStage": { "nullable": true, "properties": { "index": { "type": "number", "description": "The zero-based index of the stage", "example": 0 }, "isFinalStage": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage is the final stage (targetPercentage === 100)", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed" }, "duration": { "nullable": true, "type": "number", "description": "Duration in seconds for automatic advancement, null for manual stages or the final stage", "example": null }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "duration", "index", "isFinalStage", "requireApproval", "targetPercentage" ], "type": "object", "description": "The next stage to be activated, null if not in ACTIVE state", "example": { "index": 2, "isFinalStage": false, "targetPercentage": 60, "requireApproval": true, "duration": null } }, "startedAt": { "type": "number", "description": "Unix timestamp in milliseconds when the rolling release started", "example": 1716210500000 }, "updatedAt": { "type": "number", "description": "Unix timestamp in milliseconds when the rolling release was last updated", "example": 1716210600000 }, "currentCanaryPercentage": { "type": "number", "description": "When set (for example while {@link substate} is `PAUSED`), the canary traffic percentage persisted on the rollout document — use for dashboard display when linear shift is active." } }, "required": [ "activeStage", "advancementType", "canaryDeployment", "currentDeployment", "nextStage", "queuedDeploymentId", "stages", "startedAt", "state", "substate", "updatedAt" ], "type": "object", "description": "Rolling release information including configuration and document details, or null if no rolling release exists" } }, "required": [ "rollingRelease" ], "type": "object", "description": "The response format for rolling release endpoints that return rolling release information" } } } }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "idOrName", "description": "Project ID or project name (URL-encoded)", "in": "path", "required": true, "schema": { "description": "Project ID or project name (URL-encoded)", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "nextStageIndex", "canaryDeploymentId" ], "properties": { "nextStageIndex": { "description": "The index of the stage to transition to", "type": "number" }, "canaryDeploymentId": { "description": "The id of the canary deployment to approve for the next stage", "type": "string" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "approveRollingReleaseStage", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.rollingRelease.approveRollingReleaseStage({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/projects/{idOrName}/rolling-release/complete": { "post": { "description": "Force-complete a Rolling Release. The canary deployment will begin serving 100% of the traffic.", "operationId": "completeRollingRelease", "security": [ { "bearerToken": [] } ], "summary": "Complete the rolling release for the project", "tags": [ "rolling-release" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "rollingRelease": { "nullable": true, "properties": { "state": { "type": "string", "enum": [ "ACTIVE", "COMPLETE", "ABORTED" ], "description": "The current state of the rolling release", "example": "ACTIVE" }, "substate": { "nullable": true, "type": "string", "enum": [ "PAUSED", null ], "description": "When set to `PAUSED`, the rollout is frozen at the current percentage until continued." }, "currentDeployment": { "nullable": true, "properties": { "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "readyStateAt": { "type": "number" }, "source": { "type": "string", "enum": [ "import", "api-trigger-git-deploy", "cli", "clone/repo", "git", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from", "example": "cli" }, "target": { "nullable": true, "type": "string", "enum": [ "staging", "production", null ], "description": "If defined, either `staging` if a staging alias in the format `..now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the \"preview\" deployment.", "example": null }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" } }, "required": [ "createdAt", "id", "name", "readyState", "url" ], "type": "object", "description": "The current deployment receiving production traffic", "example": { "id": "dpl_abc123", "name": "my-shop@main", "url": "my-shop.vercel.app", "target": "production", "source": "git", "createdAt": 1716206500000, "readyState": "READY", "readyStateAt": 1716206800000 } }, "canaryDeployment": { "nullable": true, "properties": { "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "readyStateAt": { "type": "number" }, "source": { "type": "string", "enum": [ "import", "api-trigger-git-deploy", "cli", "clone/repo", "git", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from", "example": "cli" }, "target": { "nullable": true, "type": "string", "enum": [ "staging", "production", null ], "description": "If defined, either `staging` if a staging alias in the format `..now.sh` was assigned upon creation, or `production` if the aliases from `alias` were assigned. `null` value indicates the \"preview\" deployment.", "example": null }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" } }, "required": [ "createdAt", "id", "name", "readyState", "url" ], "type": "object", "description": "The canary deployment being rolled out", "example": { "id": "dpl_def456", "name": "my-shop@9c7e2f4", "url": "9c7e2f4-my-shop.vercel.app", "target": "production", "source": "git", "createdAt": 1716210100000, "readyState": "READY", "readyStateAt": 1716210400000 } }, "queuedDeploymentId": { "nullable": true, "type": "string", "description": "The ID of a deployment queued for the next rolling release", "example": "dpl_ghi789" }, "advancementType": { "type": "string", "enum": [ "automatic", "manual-approval" ], "description": "The advancement type of the rolling release", "example": "manual-approval" }, "stages": { "items": { "properties": { "index": { "type": "number", "description": "The zero-based index of the stage", "example": 0 }, "isFinalStage": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage is the final stage (targetPercentage === 100)", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed" }, "duration": { "nullable": true, "type": "number", "description": "Duration in seconds for automatic advancement, null for manual stages or the final stage", "example": null }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "duration", "index", "isFinalStage", "requireApproval", "targetPercentage" ], "type": "object", "description": "All stages configured for this rolling release", "example": [ { "index": 0, "isFinalStage": false, "targetPercentage": 5, "requireApproval": true, "duration": null }, { "index": 1, "isFinalStage": false, "targetPercentage": 25, "requireApproval": true, "duration": null }, { "index": 2, "isFinalStage": false, "targetPercentage": 60, "requireApproval": true, "duration": null }, { "index": 3, "isFinalStage": true, "targetPercentage": 100, "requireApproval": false, "duration": null } ] }, "type": "array", "description": "All stages configured for this rolling release", "example": [ { "index": 0, "isFinalStage": false, "targetPercentage": 5, "requireApproval": true, "duration": null }, { "index": 1, "isFinalStage": false, "targetPercentage": 25, "requireApproval": true, "duration": null }, { "index": 2, "isFinalStage": false, "targetPercentage": 60, "requireApproval": true, "duration": null }, { "index": 3, "isFinalStage": true, "targetPercentage": 100, "requireApproval": false, "duration": null } ] }, "activeStage": { "nullable": true, "properties": { "index": { "type": "number", "description": "The zero-based index of the stage", "example": 0 }, "isFinalStage": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage is the final stage (targetPercentage === 100)", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed" }, "duration": { "nullable": true, "type": "number", "description": "Duration in seconds for automatic advancement, null for manual stages or the final stage", "example": null }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "duration", "index", "isFinalStage", "requireApproval", "targetPercentage" ], "type": "object", "description": "The currently active stage, null if the rollout is aborted", "example": { "index": 1, "isFinalStage": false, "targetPercentage": 25, "requireApproval": true, "duration": null } }, "nextStage": { "nullable": true, "properties": { "index": { "type": "number", "description": "The zero-based index of the stage", "example": 0 }, "isFinalStage": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage is the final stage (targetPercentage === 100)", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed" }, "duration": { "nullable": true, "type": "number", "description": "Duration in seconds for automatic advancement, null for manual stages or the final stage", "example": null }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "duration", "index", "isFinalStage", "requireApproval", "targetPercentage" ], "type": "object", "description": "The next stage to be activated, null if not in ACTIVE state", "example": { "index": 2, "isFinalStage": false, "targetPercentage": 60, "requireApproval": true, "duration": null } }, "startedAt": { "type": "number", "description": "Unix timestamp in milliseconds when the rolling release started", "example": 1716210500000 }, "updatedAt": { "type": "number", "description": "Unix timestamp in milliseconds when the rolling release was last updated", "example": 1716210600000 }, "currentCanaryPercentage": { "type": "number", "description": "When set (for example while {@link substate} is `PAUSED`), the canary traffic percentage persisted on the rollout document — use for dashboard display when linear shift is active." } }, "required": [ "activeStage", "advancementType", "canaryDeployment", "currentDeployment", "nextStage", "queuedDeploymentId", "stages", "startedAt", "state", "substate", "updatedAt" ], "type": "object", "description": "Rolling release information including configuration and document details, or null if no rolling release exists" } }, "required": [ "rollingRelease" ], "type": "object", "description": "The response format for rolling release endpoints that return rolling release information" } } } }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "idOrName", "description": "Project ID or project name (URL-encoded)", "in": "path", "required": true, "schema": { "description": "Project ID or project name (URL-encoded)", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "canaryDeploymentId" ], "properties": { "canaryDeploymentId": { "description": "The ID of the canary deployment to complete", "type": "string" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "completeRollingRelease", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.rollingRelease.completeRollingRelease({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/projects/{idOrName}/transfer-request": { "post": { "description": "Initiates a project transfer request from one team to another.
Returns a `code` that remains valid for 24 hours and can be used to accept the transfer request by another team using the `PUT /projects/transfer-request/:code` endpoint.
Users can also accept the project transfer request using the claim URL: `https://vercel.com/claim-deployment?code=&returnUrl=`.
The `code` parameter specifies the project transfer request code generated using this endpoint.
The `returnUrl` parameter redirects users to a specific page of the application if the claim URL is invalid or expired.", "operationId": "createProjectTransferRequest", "security": [ { "bearerToken": [] } ], "summary": "Create project transfer request", "tags": [ "projects" ], "responses": { "200": { "description": "The project transfer request has been initiated successfully.", "content": { "application/json": { "schema": { "properties": { "code": { "type": "string", "description": "Code that can be used to accept the project transfer request.", "example": "f99cc49a-602e-4786-a748-762dfb205880" } }, "required": [ "code" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "idOrName", "description": "The ID or name of the project to transfer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID or name of the project to transfer." } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "callbackUrl": { "type": "string", "description": "The URL to send a webhook to when the transfer is accepted." }, "callbackSecret": { "type": "string", "description": "The secret to use to sign the webhook payload with HMAC-SHA256." } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createProjectTransferRequest", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.createProjectTransferRequest({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/projects/transfer-request/{code}": { "put": { "description": "Accept a project transfer request initated by another team.
The `code` is generated using the `POST /projects/:idOrName/transfer-request` endpoint.", "operationId": "acceptProjectTransferRequest", "security": [ { "bearerToken": [] } ], "summary": "Accept project transfer request", "tags": [ "projects" ], "responses": { "202": { "description": "The project has been transferred successfully.", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "partnerCalls": { "items": { "properties": { "installationId": { "type": "string" }, "resourceIds": { "items": { "type": "string" }, "type": "array" }, "result": { "properties": { "status": { "type": "string", "enum": [ "errored", "fulfilled" ] }, "error": { "type": "object" }, "code": { "type": "string" } }, "required": [ "status" ], "type": "object" } }, "required": [ "installationId", "resourceIds", "result" ], "type": "object" }, "type": "array" }, "resourceTransferErrors": { "items": { "type": "object" }, "type": "array" }, "transferredStoreIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "partnerCalls", "resourceTransferErrors", "transferredStoreIds" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "code", "description": "The code of the project transfer request.", "in": "path", "required": true, "schema": { "type": "string", "description": "The code of the project transfer request." } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "newProjectName": { "description": "The desired name for the project", "example": "a-project-name", "type": "string", "maxLength": 100 }, "paidFeatures": { "type": "object", "additionalProperties": false, "properties": { "concurrentBuilds": { "type": "integer", "nullable": true }, "passwordProtection": { "type": "boolean", "nullable": true }, "previewDeploymentSuffix": { "type": "boolean", "nullable": true } } }, "acceptedPolicies": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string", "format": "date-time" }, "required": [ "eula", "privacy" ], "properties": { "eula": { "type": "string", "format": "date-time" }, "privacy": { "type": "string", "format": "date-time" } } } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "acceptProjectTransferRequest", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.acceptProjectTransferRequest({\n code: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n newProjectName: \"a-project-name\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": { "oneOf": [ { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "integration-automation-bypass" ] }, "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "createdAt", "createdBy", "integrationId", "scope" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "automation-bypass" ] }, "isEnvVar": { "type": "boolean", "enum": [ false, true ], "description": "When there was only one bypass, it was automatically set as an env var on deployments. With multiple bypasses, there is always one bypass that is selected as the default, and gets set as an env var on deployments. As this is a new field, undefined means that the bypass is the env var. If there are any automation bypasses, exactly one must be the env var." }, "note": { "type": "string", "description": "Optional note about the bypass to be displayed in the UI" } }, "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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" ] }, "generate": { "description": "Generate a new secret. If neither generate or revoke are provided, a new random secret will be generated.", "type": "object", "properties": { "secret": { "description": "Optional value of the secret to generate, don't send it for oauth2 tokens", "type": "string", "pattern": "^[a-zA-Z0-9]{32}$" }, "note": { "type": "string", "description": "Note to be displayed in the UI for this bypass", "maxLength": 100 } } }, "update": { "description": "Update an existing bypass", "type": "object", "required": [ "secret" ], "properties": { "secret": { "description": "Automation bypass to updated", "type": "string" }, "isEnvVar": { "type": "boolean", "description": "Whether or not this bypass is set as the VERCEL_AUTOMATION_BYPASS_SECRET environment variable on deployments" }, "note": { "type": "string", "description": "Note to be displayed in the UI for this bypass", "maxLength": 100 } } } }, "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateProjectProtectionBypass", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.updateProjectProtectionBypass({\n idOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {},\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "updateProjectProtectionBypass", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.UpdateProjectProtectionBypass(ctx, \"\", nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/projects/{projectId}/rollback/{deploymentId}": { "post": { "description": "Allows users to rollback to a deployment.", "operationId": "requestRollback", "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": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "409": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "projectId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "deploymentId", "description": "The ID of the deployment to rollback *to*", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the deployment to rollback *to*" } }, { "name": "description", "description": "The reason for the rollback", "in": "query", "required": false, "schema": { "type": "string", "description": "The reason for the rollback" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "requestRollback", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.projects.requestRollback({\n projectId: \"\",\n deploymentId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/projects/{projectId}/rollback/{deploymentId}/update-description": { "patch": { "description": "Updates the reason for a rollback, without changing the rollback status itself.", "operationId": "updateProjectsByProjectIdRollbackByDeploymentIdUpdateDescription", "security": [], "summary": "Updates the description for a rollback", "tags": [ "projects" ], "responses": { "200": { "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "409": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "projectId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "deploymentId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "description": { "type": "string", "description": "The reason for the rollback" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateProjectsByProjectIdRollbackByDeploymentIdUpdateDescription", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n await vercel.projects.updateProjectsByProjectIdRollbackByDeploymentIdUpdateDescription({\n projectId: \"\",\n deploymentId: \"\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/projects/{projectId}/microfrontends": { "patch": { "description": "Update the microfrontends settings for a project.", "operationId": "updateMicrofrontends", "security": [ { "bearerToken": [] } ], "summary": "Update the microfrontends settings", "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": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "production", "preview" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "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 * * *" }, "source": { "type": "string", "enum": [ "api" ], "description": "The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json)." }, "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "dataCache": { "properties": { "userDisabled": { "type": "boolean", "enum": [ false, true ] }, "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "delegatedProtection": { "nullable": true, "type": "object" }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "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 identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "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": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "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": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "customEnvironments": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "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": [ "domain", "reason", "type", "value" ], "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": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "services", "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "mastra", null ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "jobs": { "properties": { "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "typecheck": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" } }, "type": "object" }, "latestDeployments": { "items": { "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "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." }, "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "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-custom-host" ] }, "host": { "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "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", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "routeObservabilityToThisProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether observability data should be routed to this microfrontend project or a root project." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "enum": [ false, true ], "description": "Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "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" }, "passwordProtection": { "nullable": true, "type": "object" }, "productionDeploymentsFastLane": { "type": "boolean", "enum": [ false, true ] }, "publicSource": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollbackDescription": { "properties": { "userId": { "type": "string", "description": "The user who rolled back the project." }, "username": { "type": "string", "description": "The username of the user who rolled back the project." }, "description": { "type": "string", "description": "User-supplied explanation of why they rolled back the project. Limited to 250 characters." }, "createdAt": { "type": "number", "description": "Timestamp of when the rollback was requested." } }, "required": [ "createdAt", "description", "userId", "username" ], "type": "object", "description": "Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback." }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "defaultResourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "standard_legacy", "standard", "performance" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "standard", "enhanced", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "fixed", "elastic" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "skewProtectionBoundaryAt": { "type": "number" }, "skewProtectionMaxAge": { "type": "number" }, "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "staticIps": { "properties": { "builds": { "type": "boolean", "enum": [ false, true ] }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "regions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "builds", "enabled", "regions" ], "type": "object" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "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" }, "deploymentHostname": { "type": "string" }, "name": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "plan": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "readyState": { "type": "string" }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string" }, "url": { "type": "string" }, "userId": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "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", "enum": [ false, true ] }, "enablePreviewFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "enableProductionFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "permissions": { "properties": { "oauth2Connection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organization": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "user": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userPreference": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAuthn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "accessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "agent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alerts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alertRules": { "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" }, "apiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyAiGateway": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oauth2Application": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallationRequest": { "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" }, "billingRefund": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingTaxId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blob": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blobStoreTokenSet": { "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" }, "ciInvocations": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciLogs": { "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" }, "connexClient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClientProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachineDefault": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheBillingSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "defaultDeploymentProtection": { "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" }, "drain": { "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" }, "endpointVerification": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "fileUpload": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "flagsExplorerSubscription": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "gitRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "imageOptimizationNewPrice": { "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" }, "integrationConfigurationProjects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationRole": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationDeploymentAction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResource": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceReplCommand": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceSecrets": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationSSOSession": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationVercelConfigurationOverride": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationPullRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ipBlocking": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "jobGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logDrain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceBillingData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationEdgeConfigData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInstallationMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "Monitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringChart": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringQuery": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationCustomerBudget": { "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" }, "notificationPreferences": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationStatementOfReasons": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationUsageAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityFunnel": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityNotebook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "openTelemetryEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ownEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtectionInvoiceItem": { "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" }, "postgresStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "previewDeploymentSuffix": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateCloudAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "proTrialOnboarding": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "rateLimit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redis": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redisStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "remoteCaching": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "repository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "samlConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "secret": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sensitiveEnvironmentVariablePolicy": { "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" }, "storeIsLocked": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTokenSetSensitive": { "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" }, "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" }, "teamInviteLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamJoin": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMemberMfaStatus": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMicrofrontends": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembershipDisconnectSAML": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamTokenInvalidation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "token": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "toolbarComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usageCycle": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vpcPeeringConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalyticsPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook-event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "bulkRedirects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachine": { "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" }, "deploymentBuildLogs": { "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" }, "deploymentV0": { "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" }, "edgeCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "environments": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "job": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logsPreset": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandBuild": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandConcurrency": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "optionsAllowlist": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateLinkEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "productionAliasProtectionBypass": { "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" }, "projectAnalyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheckRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDelegatedProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentExpiration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentHook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentProtectionStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEvent": { "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" }, "projectFlagsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFromV0": { "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" }, "projectOIDCToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectPermissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRollingRelease": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRoutes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTier": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferOut": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "pageIntegrity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "seawallConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityPlusConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "shareableLinkStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarConnection": { "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" }, "trustedSources": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "v0Chat": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" } }, "type": "object" }, "lastRollbackTarget": { "nullable": true, "type": "object" }, "lastAliasRequest": { "nullable": true, "properties": { "fromDeploymentId": { "nullable": true, "type": "string" }, "toDeploymentId": { "type": "string" }, "fromRollingReleaseId": { "type": "string", "description": "If rolling back from a rolling release, fromDeploymentId captures the \"base\" of that rolling release, and fromRollingReleaseId captures the \"target\" of that rolling release." }, "jobStatus": { "type": "string", "enum": [ "succeeded", "failed", "skipped", "pending", "in-progress" ] }, "requestedAt": { "type": "number" }, "type": { "type": "string", "enum": [ "promote", "rollback" ] } }, "required": [ "fromDeploymentId", "jobStatus", "requestedAt", "toDeploymentId", "type" ], "type": "object" }, "protectionBypass": { "additionalProperties": { "oneOf": [ { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "integration-automation-bypass" ] }, "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "createdAt", "createdBy", "integrationId", "scope" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "automation-bypass" ] }, "isEnvVar": { "type": "boolean", "enum": [ false, true ], "description": "When there was only one bypass, it was automatically set as an env var on deployments. With multiple bypasses, there is always one bypass that is selected as the default, and gets set as an env var on deployments. As this is a new field, undefined means that the bypass is the env var. If there are any automation bypasses, exactly one must be the env var." }, "note": { "type": "string", "description": "Optional note about the bypass to be displayed in the UI" } }, "required": [ "createdAt", "createdBy", "scope" ], "type": "object" } ] }, "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "trustedIps": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "addresses": { "items": { "properties": { "value": { "type": "string" }, "note": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "protectionMode": { "type": "string", "enum": [ "additional", "exclusive" ] } }, "required": [ "addresses", "deploymentType", "protectionMode" ], "type": "object" }, { "properties": { "deploymentType": { "type": "string", "enum": [ "production", "preview", "all", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } }, "required": [ "deploymentType" ], "type": "object" } ] }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "enabled", "disabled" ], "description": "Whether the Vercel bot should automatically create GitHub deployments https://docs.github.com/en/rest/deployments/deployments#about-deployments NOTE: repository-dispatch events should be used instead" }, "disableRepositoryDispatchEvents": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should not automatically create GitHub repository-dispatch events on deployment events. https://vercel.com/docs/git/vercel-for-github#repository-dispatch-events" }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "concurrencyBucketName": { "type": "string" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "attackModeActiveUntil": { "nullable": true, "type": "number" }, "firewallConfigVersion": { "type": "number" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "deny", "challenge" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "team", "global" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "tier": { "type": "string" }, "flatRateTier": { "type": "string", "enum": [ "standard", "base", "advanced", "critical" ] }, "usageStatus": { "properties": { "kind": { "type": "string", "enum": [ "flat" ], "description": "Billing mode. Always 'flat' for flat-rate projects." }, "exceededAllowanceUntil": { "type": "number", "description": "Timestamp until which the project has exceeded its CDN allowance." }, "bypassThrottleUntil": { "type": "number", "description": "Timestamp until which throttling is bypassed (project pays list rates for overage)." } }, "required": [ "kind" ], "type": "object" }, "features": { "properties": { "webAnalytics": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "v0": { "type": "boolean", "enum": [ false, true ] }, "v0Created": { "type": "boolean", "enum": [ false, true ] }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" }, "hasDeployments": { "type": "boolean", "enum": [ false, true ] }, "dismissedToasts": { "items": { "properties": { "key": { "type": "string" }, "dismissedAt": { "type": "number" }, "action": { "type": "string", "enum": [ "delete", "cancel", "accept" ] }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "previousValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "currentValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "currentValue", "previousValue" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "action", "dismissedAt", "key", "value" ], "type": "object" }, "type": "array" }, "protectedSourcemaps": { "type": "boolean", "enum": [ false, true ] }, "tracing": { "properties": { "domains": { "type": "string" }, "ignorePaths": { "items": { "type": "string" }, "type": "array" }, "samplingRules": { "items": { "properties": { "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "production", "preview" ] }, "requestPath": { "type": "string" } }, "required": [ "rate" ], "type": "object" }, "type": "array" } }, "type": "object" } }, "required": [ "accountId", "defaultResourceConfig", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "409": { "description": "" }, "500": { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "microfrontendsGroupId": { "type": "string", "example": "mfe_12HKQaOmR5t5Uy6vdcQsNIiZgHGB", "description": "The unique group identifier to add this microfrontend to" }, "enabled": { "type": "boolean", "example": true, "description": "Enable or disable microfrontends for the project" }, "isDefaultApp": { "type": "boolean", "example": true, "description": "Whether the application is the default application for the microfrontends group" }, "defaultRoute": { "type": "string", "example": "/home", "description": "The default route used for screenshots and preview links for the project" }, "routeObservabilityToThisProject": { "type": "boolean", "description": "Whether observability data should be routed to this project or a root project. Can only be set for child applications." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "description": "Whether domains in this project should route as a microfrontend. Can only be set for child applications." } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateMicrofrontends", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.updateMicrofrontends({\n projectId: \"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n microfrontendsGroupId: \"mfe_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n enabled: true,\n isDefaultApp: true,\n defaultRoute: \"/home\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": "" }, "202": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "requestPromote", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.projects.requestPromote({\n projectId: \"\",\n deploymentId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "requestPromote", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.RequestPromote(ctx, \"\", \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/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": [ "alias", "id", "status" ], "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listPromoteAliases", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.projects.listPromoteAliases({\n projectId: \"\",\n limit: 20,\n since: 1609499532000,\n until: 1612264332000,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "listPromoteAliases", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.ListPromoteAliases(ctx, operations.ListPromoteAliasesRequest{\n ProjectID: \"\",\n Limit: vercel.Float64(20),\n Since: vercel.Float64(1609499532000),\n Until: vercel.Float64(1612264332000),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "pauseProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.projects.pauseProject({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "pauseProject", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.PauseProject(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "unpauseProject", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.projects.unpauseProject({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "unpauseProject", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Projects.UnpauseProject(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/sandboxes": { "get": { "description": "Retrieves a paginated list of sandboxes belonging to a specific project. Results can be filtered by creation time using the `since` and `until` parameters.", "operationId": "getSandboxesV1", "security": [ { "bearerToken": [] } ], "summary": "List sandboxes", "tags": [ "sandboxes" ], "responses": { "200": { "description": "The list of sandboxes matching the request filters.", "content": { "application/json": { "schema": { "properties": { "sandboxes": { "items": { "$ref": "#/components/schemas/Sandbox" }, "type": "array" }, "pagination": { "properties": { "total": { "type": "number" }, "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", "total" ], "type": "object" } }, "required": [ "pagination", "sandboxes" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "The project does not exist or the team does not have access to it." } }, "parameters": [ { "name": "project", "description": "The unique identifier or name of the project to list sandboxes for.", "in": "query", "required": false, "schema": { "description": "The unique identifier or name of the project to list sandboxes for.", "type": "string", "example": "prj_abc123" } }, { "name": "limit", "description": "Maximum number of sandboxes to return in the response. Used for pagination.", "in": "query", "required": false, "schema": { "description": "Maximum number of sandboxes to return in the response. Used for pagination.", "type": "number", "example": 20 } }, { "name": "since", "description": "Filter sandboxes created after this timestamp. Specified as Unix time in milliseconds.", "in": "query", "required": false, "schema": { "description": "Filter sandboxes created after this timestamp. Specified as Unix time in milliseconds.", "type": "number", "example": 1540095775941 } }, { "name": "until", "description": "Filter sandboxes created before this timestamp. Specified as Unix time in milliseconds.", "in": "query", "required": false, "schema": { "description": "Filter sandboxes created before this timestamp. Specified as Unix time in milliseconds.", "type": "number", "example": 1540095775951 } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getSandboxesV1", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.getSandboxesV1({\n project: \"prj_abc123\",\n limit: 20,\n since: 1540095775941,\n until: 1540095775951,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Creates a new sandbox environment for executing code in an isolated virtual machine. A sandbox can be initialized from various sources including Git repositories, tarballs, or existing snapshots. Once created, you can execute commands, read/write files, and manage the sandbox lifecycle.", "operationId": "createSandbox", "security": [ { "bearerToken": [] } ], "summary": "Create a sandbox", "tags": [ "sandboxes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "sandbox": { "$ref": "#/components/schemas/Sandbox" }, "routes": { "items": { "$ref": "#/components/schemas/SandboxPublicRoute" }, "type": "array" } }, "required": [ "routes", "sandbox" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" }, "429": { "description": "The concurrency limit has been exceeded." }, "500": { "description": "" } }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "resources": { "description": "Resources to define the VM", "additionalProperties": false, "type": "object", "properties": { "vcpus": { "description": "The number of virtual CPUs to allocate to the sandbox. Must be 1, or an even number.", "type": "integer", "minimum": 1, "default": 2, "example": 2 }, "memory": { "description": "The amount of memory in megabytes to allocate to the sandbox. Must equal vcpus * 2048.", "type": "integer", "minimum": 2048, "example": 4096 } } }, "runtime": { "description": "The runtime environment for the sandbox. Determines the pre-installed language runtimes and tools available.", "type": "string", "enum": [ "node22", "node24", "python3.13" ], "default": "node24", "example": "node24" }, "source": { "description": "The source from which to initialize the sandbox filesystem. Can be a Git repository, a tarball URL, or an existing snapshot.", "oneOf": [ { "type": "object", "description": "Clone a Git repository into the sandbox.", "properties": { "type": { "description": "Indicates the source is a Git repository." }, "url": { "type": "string", "format": "uri", "description": "The URL of the Git repository to clone.", "example": "https://github.com/vercel/next.js.git" }, "username": { "type": "string", "description": "Username for Git authentication. Required together with password for private repositories." }, "password": { "type": "string", "description": "Password or personal access token for Git authentication. Required together with username for private repositories." }, "depth": { "type": "integer", "minimum": 1, "description": "Create a shallow clone with history truncated to the specified number of commits. Useful for faster cloning of large repositories.", "example": 1 }, "revision": { "type": "string", "description": "The specific commit SHA, branch name, or tag to checkout after cloning.", "example": "main" } }, "required": [ "type", "url" ], "additionalProperties": false }, { "type": "object", "description": "Download and extract a gzipped tarball into the sandbox.", "properties": { "type": { "description": "Indicates the source is a tarball." }, "url": { "type": "string", "format": "uri", "description": "URL of a gzipped tarball (.tar.gz) to download and extract.", "example": "https://example.com/project.tar.gz" } }, "required": [ "type", "url" ], "additionalProperties": false }, { "type": "object", "description": "Restore the sandbox filesystem from an existing snapshot.", "properties": { "type": { "description": "Indicates the source is a snapshot." }, "snapshotId": { "type": "string", "description": "The unique identifier of the snapshot to restore.", "example": "snap_abc123" } }, "required": [ "type", "snapshotId" ], "additionalProperties": false } ] }, "projectId": { "description": "The target project slug or ID in which the sandbox will be assigned to.", "example": "prj_abc123", "type": "string" }, "ports": { "description": "List of ports to expose from the sandbox. Each port will be accessible via a unique URL. Maximum of 15 ports can be exposed.", "type": "array", "maxItems": 15, "uniqueItems": true, "example": [ 3000, 4000 ], "items": { "type": "integer", "description": "A port number to expose from the sandbox. Must be between 1024 and 65535.", "not": {}, "maximum": 65535, "minimum": 1024 } }, "timeout": { "type": "integer", "description": "Maximum duration in milliseconds that the sandbox can run before being automatically stopped.", "minimum": 1000, "example": 300000 }, "networkPolicy": { "description": "Network access policy for the sandbox.\\n Controls which external hosts the sandbox can communicate with.\\n Use \\\"allow-all\\\" mode to allow all traffic, \\\"deny-all\\\" to block all traffic or \\\"custom\\\" to provide specific rules.", "type": "object", "additionalProperties": false, "required": [ "mode" ], "properties": { "mode": { "description": "The network access policy mode. Use \\\"allow-all\\\" to permit all outbound traffic. Use \\\"deny-all\\\" to block all outbound traffic. Use \\\"custom\\\" to specify explicit allow/deny rules.", "type": "string", "enum": [ "allow-all", "deny-all", "custom", "default-allow", "default-deny" ], "example": "custom" }, "allowedDomains": { "description": "List of domain names the sandbox is allowed to connect to. Only applies when mode is \\\"custom\\\". Supports wildcard patterns (e.g., \\\"*.example.com\\\" matches all subdomains).", "type": "array", "example": [ "api.github.com", "*.npmjs.org" ], "items": { "type": "string", "description": "A domain name pattern. Use \\\"*\\\" for wildcard matching of subdomains (e.g., \\\"*.example.com\\\")." } }, "allowedCIDRs": { "description": "List of IP address ranges (in CIDR notation) the sandbox is allowed to connect to. Traffic to these addresses bypasses domain-based restrictions.", "type": "array", "example": [ "35.192.0.0/12", "104.16.0.0/12" ], "items": { "type": "string", "description": "An IPv4 address range in CIDR notation (e.g., \\\"35.192.0.0/12\\\")." } }, "deniedCIDRs": { "description": "List of IP address ranges (in CIDR notation) the sandbox is blocked from connecting to. These rules take precedence over all allowed rules.", "type": "array", "example": [ "35.192.0.0/12" ], "items": { "type": "string", "description": "An IP address range in CIDR notation to block." } } } }, "env": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Default environment variables for the sandbox. These are inherited by all commands unless overridden.", "default": {}, "example": { "NODE_ENV": "production", "HELLO": "world" } } } } } } } } }, "/v1/sandboxes/snapshots": { "get": { "description": "Retrieves a paginated list of snapshots for a specific project.", "operationId": "listSnapshots", "security": [ { "bearerToken": [] } ], "summary": "List snapshots", "tags": [ "sandboxes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "snapshots": { "items": { "$ref": "#/components/schemas/Snapshot" }, "type": "array" }, "pagination": { "properties": { "total": { "type": "number" }, "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", "total" ], "type": "object" } }, "required": [ "pagination", "snapshots" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "project", "description": "The unique identifier or name of the project to list snapshots for.", "in": "query", "required": false, "schema": { "description": "The unique identifier or name of the project to list snapshots for.", "type": "string", "example": "prj_abc123" } }, { "name": "limit", "description": "Maximum number of snapshots to return in the response. Used for pagination.", "in": "query", "required": false, "schema": { "description": "Maximum number of snapshots to return in the response. Used for pagination.", "type": "number", "example": 20 } }, { "name": "since", "description": "Filter snapshots created after this timestamp. Specified as Unix time in milliseconds.", "in": "query", "required": false, "schema": { "description": "Filter snapshots created after this timestamp. Specified as Unix time in milliseconds.", "type": "number", "example": 1540095775941 } }, { "name": "until", "description": "Filter snapshots created before this timestamp. Specified as Unix time in milliseconds.", "in": "query", "required": false, "schema": { "description": "Filter snapshots created before this timestamp. Specified as Unix time in milliseconds.", "type": "number", "example": 1540095775951 } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listSnapshots", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.listSnapshots({\n project: \"prj_abc123\",\n limit: 20,\n since: 1540095775941,\n until: 1540095775951,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}": { "get": { "description": "Retrieves detailed information about a specific sandbox, including its current status, resource configuration, and exposed routes.", "operationId": "getSandbox", "security": [ { "bearerToken": [] } ], "summary": "Get a sandbox", "tags": [ "sandboxes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "sandbox": { "$ref": "#/components/schemas/Sandbox" }, "routes": { "items": { "$ref": "#/components/schemas/SandboxPublicRoute" }, "type": "array" } }, "required": [ "routes", "sandbox" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "429": { "description": "" } }, "parameters": [ { "name": "sandboxId", "description": "The unique identifier of the sandbox to retrieve.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox to retrieve.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getSandbox", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.getSandbox({\n sandboxId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}/cmd": { "get": { "description": "Retrieves a list of all commands that have been executed in a sandbox, including their current status, exit codes, and execution times, ordered from the most recent to the oldest.", "operationId": "listCommands", "security": [ { "bearerToken": [] } ], "summary": "List commands", "tags": [ "sandboxes" ], "responses": { "200": { "description": "The list of commands executed in the sandbox.", "content": { "application/json": { "schema": { "properties": { "commands": { "items": { "$ref": "#/components/schemas/SandboxCommand" }, "type": "array" } }, "required": [ "commands" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "sandboxId", "description": "The unique identifier of the sandbox to list commands for.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox to list commands for.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listCommands", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.listCommands({\n sandboxId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Executes a shell command inside a running sandbox. The command runs asynchronously and returns immediately with a command ID that can be used to track its progress and retrieve its output. Optionally, use the `wait` parameter to stream the command status until completion.", "operationId": "runCommand", "security": [ { "bearerToken": [] } ], "summary": "Execute a command", "tags": [ "sandboxes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "command": { "$ref": "#/components/schemas/SandboxCommand" } }, "required": [ "command" ], "type": "object" } }, "application/x-ndjson": { "schema": { "properties": { "command": { "$ref": "#/components/schemas/SandboxCommand" } }, "required": [ "command" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sandboxId", "description": "The unique identifier of the sandbox in which to execute the command.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox in which to execute the command.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "command" ], "properties": { "command": { "type": "string", "description": "The executable or shell command to run. This is the program name without arguments.", "example": "npm" }, "args": { "type": "array", "items": { "type": "string" }, "description": "Arguments to pass to the command. Each argument should be a separate array element.", "example": [ "install", "--save", "lodash" ] }, "cwd": { "type": "string", "description": "The working directory in which to execute the command. Defaults to the sandbox home directory if not specified.", "example": "/home/vercel-sandbox" }, "env": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Additional environment variables to set for this command. These are merged with the sandbox environment.", "default": {}, "example": { "NODE_ENV": "production", "DEBUG": "true" } }, "sudo": { "type": "boolean", "description": "Execute the command with root (superuser) privileges.", "default": false }, "wait": { "type": "boolean", "description": "If true, returns an ND-JSON stream that emits the command status when started and again when finished. Useful for synchronously waiting for command completion.", "default": false } } } } } }, "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "runCommand", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.runCommand({\n sandboxId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n command: \"npm\",\n args: [\n \"install\",\n \"--save\",\n \"lodash\",\n ],\n cwd: \"/home/vercel-sandbox\",\n env: {\n \"NODE_ENV\": \"production\",\n \"DEBUG\": \"true\",\n },\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}/{cmdId}/kill": { "post": { "description": "Sends a signal to terminate a running command in a sandbox. The signal can be used to gracefully stop (SIGTERM) or forcefully kill (SIGKILL) the process. The command must still be running for this operation to succeed.", "operationId": "killCommand", "security": [ { "bearerToken": [] } ], "summary": "Kill a command", "tags": [ "sandboxes" ], "responses": { "200": { "description": "The command was terminated successfully.", "content": { "application/json": { "schema": { "properties": { "command": { "$ref": "#/components/schemas/SandboxCommand" } }, "required": [ "command" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "cmdId", "description": "The unique identifier of the command to terminate.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the command to terminate.", "example": "cmd_abc123" } }, { "name": "sandboxId", "description": "The unique identifier of the sandbox containing the command.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox containing the command.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "signal" ], "properties": { "signal": { "type": "number", "description": "The POSIX signal number to send to the process. Common values: 15 (SIGTERM) for graceful termination, 9 (SIGKILL) for forced termination.", "example": 15 } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "killCommand", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.killCommand({\n cmdId: \"cmd_abc123\",\n sandboxId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n signal: 15,\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}/stop": { "post": { "description": "Stops a running sandbox and releases its allocated resources. All running processes within the sandbox will be terminated. This action cannot be undone. A stopped sandbox cannot be restarted.", "operationId": "stopSandbox", "security": [ { "bearerToken": [] } ], "summary": "Stop a sandbox", "tags": [ "sandboxes" ], "responses": { "200": { "description": "The sandbox was stopped successfully.", "content": { "application/json": { "schema": { "properties": { "sandbox": { "$ref": "#/components/schemas/Sandbox" } }, "required": [ "sandbox" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sandboxId", "description": "The unique identifier of the sandbox to stop.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox to stop.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "stopSandbox", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.stopSandbox({\n sandboxId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}/extend-timeout": { "post": { "description": "Extends the maximum execution time of a running sandbox. The sandbox must be active and able to accept commands. The total timeout cannot exceed the maximum allowed limit for your account.", "operationId": "extendSandboxTimeout", "security": [ { "bearerToken": [] } ], "summary": "Extend sandbox timeout", "tags": [ "sandboxes" ], "responses": { "200": { "description": "The sandbox timeout was extended successfully.", "content": { "application/json": { "schema": { "properties": { "sandbox": { "$ref": "#/components/schemas/Sandbox" } }, "required": [ "sandbox" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sandboxId", "description": "The unique identifier of the sandbox to extend the timeout for.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox to extend the timeout for.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "duration" ], "properties": { "duration": { "type": "number", "description": "The amount of time in milliseconds to add to the current timeout. Must be at least 1000ms (1 second).", "minimum": 1000, "example": 300000 } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "extendSandboxTimeout", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.extendSandboxTimeout({\n sandboxId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n duration: 300000,\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}/network-policy": { "post": { "description": "Replaces the network access policy of a running sandbox. Use this to control which external hosts the sandbox can communicate with. This is a full replacement. Any previously configured network rules will be overwritten.", "operationId": "updateNetworkPolicy", "security": [ { "bearerToken": [] } ], "summary": "Update network policy", "tags": [ "sandboxes" ], "responses": { "200": { "description": "The sandbox network policy was updated successfully.", "content": { "application/json": { "schema": { "properties": { "sandbox": { "$ref": "#/components/schemas/Sandbox" } }, "required": [ "sandbox" ], "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": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sandboxId", "description": "The unique identifier of the sandbox to update the network policy for.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox to update the network policy for.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "description": "Network access policy for the sandbox.\n Controls which external hosts the sandbox can communicate with.\n Use \"allow-all\" mode to allow all traffic, \"deny-all\" to block all traffic or \"custom\" to provide specific rules.", "type": "object", "additionalProperties": false, "required": [ "mode" ], "properties": { "mode": { "description": "The network access policy mode. Use \"allow-all\" to permit all outbound traffic. Use \"deny-all\" to block all outbound traffic. Use \"custom\" to specify explicit allow/deny rules.", "type": "string", "enum": [ "allow-all", "deny-all", "custom", "default-allow", "default-deny" ], "example": "custom" }, "allowedDomains": { "description": "List of domain names the sandbox is allowed to connect to. Only applies when mode is \"custom\". Supports wildcard patterns (e.g., \"*.example.com\" matches all subdomains).", "type": "array", "example": [ "api.github.com", "*.npmjs.org" ], "items": { "type": "string", "description": "A domain name pattern. Use \"*\" for wildcard matching of subdomains (e.g., \"*.example.com\")." } }, "allowedCIDRs": { "description": "List of IP address ranges (in CIDR notation) the sandbox is allowed to connect to. Traffic to these addresses bypasses domain-based restrictions.", "type": "array", "example": [ "35.192.0.0/12", "104.16.0.0/12" ], "items": { "type": "string", "description": "An IPv4 address range in CIDR notation (e.g., \"35.192.0.0/12\")." } }, "deniedCIDRs": { "description": "List of IP address ranges (in CIDR notation) the sandbox is blocked from connecting to. These rules take precedence over all allowed rules.", "type": "array", "example": [ "35.192.0.0/12" ], "items": { "type": "string", "description": "An IP address range in CIDR notation to block." } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateNetworkPolicy", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.updateNetworkPolicy({\n sandboxId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n mode: \"custom\",\n allowedDomains: [\n \"api.github.com\",\n \"*.npmjs.org\",\n ],\n allowedCIDRs: [\n \"35.192.0.0/12\",\n \"104.16.0.0/12\",\n ],\n deniedCIDRs: [\n \"35.192.0.0/12\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}/cmd/{cmdId}": { "get": { "description": "Retrieves the current status and details of a command executed in a sandbox. Use the `wait` parameter to block until the command finishes execution.", "operationId": "getCommand", "security": [ { "bearerToken": [] } ], "summary": "Get a command", "tags": [ "sandboxes" ], "responses": { "200": { "description": "The command data along with the exit code if the command did finish.", "content": { "application/json": { "schema": { "properties": { "command": { "$ref": "#/components/schemas/SandboxCommand" } }, "required": [ "command" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sandboxId", "description": "The unique identifier of the sandbox containing the command.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox containing the command.", "example": "sbx_abc123" } }, { "name": "cmdId", "description": "The unique identifier of the command to retrieve.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the command to retrieve.", "example": "cmd_abc123" } }, { "name": "wait", "description": "If set to \"true\", the request will block until the command finishes execution. Useful for synchronously waiting for command completion.", "in": "query", "required": false, "schema": { "type": "string", "description": "If set to \"true\", the request will block until the command finishes execution. Useful for synchronously waiting for command completion.", "enum": [ "true", "false" ], "default": "false" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getCommand", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.getCommand({\n sandboxId: \"sbx_abc123\",\n cmdId: \"cmd_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}/cmd/{cmdId}/logs": { "get": { "description": "Streams the output of a command in real-time using newline-delimited JSON (ND-JSON). Each entry includes the output data and stream type. Stream types include `stdout`, `stderr`, and `error` (for stream failures).", "operationId": "getCommandLogs", "security": [ { "bearerToken": [] } ], "summary": "Stream command logs", "tags": [ "sandboxes" ], "responses": { "200": { "description": "", "content": { "application/x-ndjson": { "schema": { "oneOf": [ { "properties": { "stream": { "type": "string" }, "data": { "properties": { "code": { "type": "string", "enum": [ "sandbox_stream_closed" ] }, "message": { "type": "string", "enum": [ "Sandbox stream was closed and is not accepting commands." ] } }, "required": [ "code", "message" ], "type": "object" } }, "required": [ "data", "stream" ], "type": "object" }, { "properties": { "data": { "type": "string" }, "stream": { "type": "string" } }, "required": [ "data", "stream" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sandboxId", "description": "The unique identifier of the sandbox containing the command.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox containing the command.", "example": "sbx_abc123" } }, { "name": "cmdId", "description": "The unique identifier of the command to stream logs for.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the command to stream logs for.", "example": "cmd_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getCommandLogs", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.getCommandLogs({\n sandboxId: \"sbx_abc123\",\n cmdId: \"cmd_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n for await (const event of result) {\n // Handle the event\n console.log(event);\n }\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}/fs/read": { "post": { "description": "Downloads the contents of a file from a sandbox's filesystem. The file content is returned as a binary stream with appropriate Content-Disposition headers for file download.", "operationId": "readFile", "security": [ { "bearerToken": [] } ], "summary": "Read a file", "tags": [ "sandboxes" ], "responses": { "200": { "description": "", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sandboxId", "description": "The unique identifier of the sandbox to read the file from.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox to read the file from.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "path" ], "properties": { "cwd": { "description": "The base directory for resolving relative paths. If not specified, paths are resolved from the sandbox home directory.", "type": "string", "example": "/home/vercel-sandbox" }, "path": { "description": "The path of the file to read. Can be absolute or relative to the working directory.", "type": "string", "example": "dist/agent-output.md" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "readFile", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.readFile({\n sandboxId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n cwd: \"/home/vercel-sandbox\",\n path: \"dist/agent-output.md\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}/fs/mkdir": { "post": { "description": "Creates a new directory in a sandbox's filesystem. By default, parent directories are created recursively if they don't exist (similar to `mkdir -p`).", "operationId": "createDirectory", "security": [ { "bearerToken": [] } ], "summary": "Create a directory", "tags": [ "sandboxes" ], "responses": { "200": { "description": "The directory was created successfully.", "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sandboxId", "description": "The unique identifier of the sandbox to create the directory in.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox to create the directory in.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "path" ], "properties": { "cwd": { "description": "The base directory for resolving relative paths. If not specified, paths are resolved from the sandbox home directory.", "type": "string", "example": "/home/vercel-sandbox" }, "path": { "description": "The path of the directory to create. Can be absolute or relative to the working directory.", "type": "string", "example": "src/components" }, "recursive": { "description": "If true, creates parent directories as needed (like `mkdir -p`). If false, fails if parent directories do not exist.", "type": "boolean", "default": true } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createDirectory", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.createDirectory({\n sandboxId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n cwd: \"/home/vercel-sandbox\",\n path: \"src/components\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}/fs/write": { "post": { "description": "Uploads and extracts files to a sandbox's filesystem. Files must be uploaded as a gzipped tarball (`.tar.gz`) with the `Content-Type` header set to `application/gzip`. The tarball contents are extracted to the sandbox's working directory, or to a custom directory specified via the `x-cwd` header.", "operationId": "writeFiles", "security": [ { "bearerToken": [] } ], "summary": "Write files", "tags": [ "sandboxes" ], "responses": { "200": { "description": "The files were successfully written to the sandbox.", "content": { "application/json": { "schema": { "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" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "in": "header", "description": "The target directory where the tarball contents will be extracted. If not specified, files are extracted to the sandbox home directory.", "schema": { "type": "string", "description": "The target directory where the tarball contents will be extracted. If not specified, files are extracted to the sandbox home directory.", "example": "/home/vercel-sandbox" }, "name": "'x-Cwd'" }, { "name": "sandboxId", "description": "The unique identifier of the sandbox to write files to.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox to write files to.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "writeFiles", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.writeFiles({\n xCwd: \"/home/vercel-sandbox\",\n sandboxId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/snapshots/{snapshotId}": { "get": { "description": "Retrieves detailed information about a specific snapshot, including its creation time, size, expiration date, and the source sandbox it was created from.", "operationId": "getSnapshot", "security": [ { "bearerToken": [] } ], "summary": "Get a snapshot", "tags": [ "sandboxes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "snapshot": { "$ref": "#/components/schemas/Snapshot" } }, "required": [ "snapshot" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "snapshotId", "description": "The unique identifier of the snapshot to retrieve.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the snapshot to retrieve.", "example": "snap_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getSnapshot", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.getSnapshot({\n snapshotId: \"snap_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Permanently deletes a snapshot and frees its associated storage. This action cannot be undone. After deletion, the snapshot can no longer be used to create new sandboxes.", "operationId": "deleteSnapshot", "security": [ { "bearerToken": [] } ], "summary": "Delete a snapshot", "tags": [ "sandboxes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "snapshot": { "$ref": "#/components/schemas/Snapshot" } }, "required": [ "snapshot" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "snapshotId", "description": "The unique identifier of the snapshot to delete.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the snapshot to delete.", "example": "snap_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteSnapshot", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.deleteSnapshot({\n snapshotId: \"snap_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/sandboxes/{sandboxId}/snapshot": { "post": { "description": "Creates a point-in-time snapshot of a running sandbox's filesystem. Snapshots can be used to quickly restore a sandbox to a previous state or to create new sandboxes with pre-configured environments. The sandbox must be running and able to accept commands for a snapshot to be created. The sandbox will be terminated after the snapshot is created.", "operationId": "createSnapshot", "security": [ { "bearerToken": [] } ], "summary": "Create a snapshot", "tags": [ "sandboxes" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "snapshot": { "$ref": "#/components/schemas/Snapshot" }, "sandbox": { "$ref": "#/components/schemas/Sandbox" } }, "required": [ "sandbox", "snapshot" ], "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": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sandboxId", "description": "The unique identifier of the sandbox to snapshot.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the sandbox to snapshot.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "expiration": { "description": "The number of milliseconds after which the snapshot will expire and be deleted. Use 0 for no expiration.", "oneOf": [ {}, { "type": "integer" } ] } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createSnapshot", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxes.createSnapshot({\n sandboxId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes": { "get": { "description": "Retrieves a paginated list of named sandboxes belonging to a specific project. Results can be sorted by creation time or name, and optionally filtered by name prefix.", "operationId": "getSandboxesV2", "security": [ { "bearerToken": [] } ], "summary": "List sandboxes", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "sandboxes": { "items": { "$ref": "#/components/schemas/NamedSandbox" }, "type": "array" }, "pagination": { "properties": { "count": { "type": "number" }, "next": { "nullable": true, "type": "string" } }, "required": [ "count", "next" ], "type": "object" } }, "required": [ "pagination", "sandboxes" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "project", "description": "The unique identifier or name of the project to list named sandboxes for.", "in": "query", "required": false, "schema": { "description": "The unique identifier or name of the project to list named sandboxes for.", "type": "string", "example": "prj_abc123" } }, { "name": "limit", "description": "Maximum number of named sandboxes to return in the response. Used for pagination.", "in": "query", "required": false, "schema": { "description": "Maximum number of named sandboxes to return in the response. Used for pagination.", "type": "number", "minimum": 1, "maximum": 50, "default": 20, "example": 20 } }, { "name": "sortBy", "description": "Field to sort by.", "in": "query", "required": false, "schema": { "description": "Field to sort by.", "type": "string", "enum": [ "createdAt", "name", "statusUpdatedAt", "currentSnapshotId" ], "default": "createdAt" } }, { "name": "namePrefix", "description": "Filter named sandboxes whose name starts with this prefix. Only valid when sortBy=name.", "in": "query", "required": false, "schema": { "description": "Filter named sandboxes whose name starts with this prefix. Only valid when sortBy=name.", "type": "string" } }, { "name": "cursor", "description": "Opaque pagination cursor from a previous response.", "in": "query", "required": false, "schema": { "description": "Opaque pagination cursor from a previous response.", "type": "string" } }, { "name": "sortOrder", "description": "Sort direction. Defaults to desc.", "in": "query", "required": false, "schema": { "description": "Sort direction. Defaults to desc.", "type": "string", "enum": [ "asc", "desc" ], "default": "desc" } }, { "name": "tags", "description": "Filter sandboxes by tag. Format: \\\"key:value\\\". Only one tag filter is supported at a time.", "in": "query", "required": false, "schema": { "description": "Filter sandboxes by tag. Format: \\\"key:value\\\". Only one tag filter is supported at a time.", "anyOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getSandboxesV2", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.getSandboxesV2({\n project: \"prj_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Creates a named sandbox environment. Named sandboxes have a unique name within a project and support automatic snapshotting on shutdown.", "operationId": "createSandboxes", "security": [ { "bearerToken": [] } ], "summary": "Create a named sandbox", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "sandbox": { "$ref": "#/components/schemas/NamedSandbox" }, "session": { "$ref": "#/components/schemas/Session" }, "routes": { "items": { "$ref": "#/components/schemas/SandboxPublicRoute" }, "type": "array" } }, "required": [ "routes", "sandbox", "session" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" }, "429": { "description": "The concurrency limit has been exceeded." }, "500": { "description": "" } }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "resources": { "description": "Resources to define the VM", "additionalProperties": false, "type": "object", "properties": { "vcpus": { "description": "The number of virtual CPUs to allocate to the sandbox. Must be 1, or an even number.", "type": "integer", "minimum": 1, "default": 2, "example": 2 }, "memory": { "description": "The amount of memory in megabytes to allocate to the sandbox. Must equal vcpus * 2048.", "type": "integer", "minimum": 2048, "example": 4096 } } }, "runtime": { "description": "The runtime environment for the sandbox. Determines the pre-installed language runtimes and tools available.", "type": "string", "enum": [ "node22", "node24", "python3.13" ], "default": "node24", "example": "node24" }, "source": { "description": "The source from which to initialize the sandbox filesystem. Can be a Git repository, a tarball URL, or an existing snapshot.", "oneOf": [ { "type": "object", "description": "Clone a Git repository into the sandbox.", "properties": { "type": { "description": "Indicates the source is a Git repository." }, "url": { "type": "string", "format": "uri", "description": "The URL of the Git repository to clone.", "example": "https://github.com/vercel/next.js.git" }, "username": { "type": "string", "description": "Username for Git authentication. Required together with password for private repositories." }, "password": { "type": "string", "description": "Password or personal access token for Git authentication. Required together with username for private repositories." }, "depth": { "type": "integer", "minimum": 1, "description": "Create a shallow clone with history truncated to the specified number of commits. Useful for faster cloning of large repositories.", "example": 1 }, "revision": { "type": "string", "description": "The specific commit SHA, branch name, or tag to checkout after cloning.", "example": "main" } }, "required": [ "type", "url" ], "additionalProperties": false }, { "type": "object", "description": "Download and extract a gzipped tarball into the sandbox.", "properties": { "type": { "description": "Indicates the source is a tarball." }, "url": { "type": "string", "format": "uri", "description": "URL of a gzipped tarball (.tar.gz) to download and extract.", "example": "https://example.com/project.tar.gz" } }, "required": [ "type", "url" ], "additionalProperties": false }, { "type": "object", "description": "Restore the sandbox filesystem from an existing snapshot.", "properties": { "type": { "description": "Indicates the source is a snapshot." }, "snapshotId": { "type": "string", "description": "The unique identifier of the snapshot to restore.", "example": "snap_abc123" } }, "required": [ "type", "snapshotId" ], "additionalProperties": false } ] }, "projectId": { "description": "The target project slug or ID in which the sandbox will be assigned to.", "example": "prj_abc123", "type": "string" }, "ports": { "description": "List of ports to expose from the sandbox. Each port will be accessible via a unique URL. Maximum of 15 ports can be exposed.", "type": "array", "maxItems": 15, "uniqueItems": true, "example": [ 3000, 4000 ], "items": { "type": "integer", "description": "A port number to expose from the sandbox. Must be between 1024 and 65535.", "not": {}, "maximum": 65535, "minimum": 1024 } }, "timeout": { "type": "integer", "description": "Maximum duration in milliseconds that the sandbox can run before being automatically stopped.", "minimum": 1000, "example": 300000 }, "networkPolicy": { "description": "Network access policy for the sandbox.\\n Controls which external hosts the sandbox can communicate with.\\n Use \\\"allow-all\\\" mode to allow all traffic, \\\"deny-all\\\" to block all traffic or \\\"custom\\\" to provide specific rules.", "type": "object", "additionalProperties": false, "required": [ "mode" ], "properties": { "mode": { "description": "The network access policy mode. Use \\\"allow-all\\\" to permit all outbound traffic. Use \\\"deny-all\\\" to block all outbound traffic. Use \\\"custom\\\" to specify explicit allow/deny rules.", "type": "string", "enum": [ "allow-all", "deny-all", "custom", "default-allow", "default-deny" ], "example": "custom" }, "allowedDomains": { "description": "List of domain names the sandbox is allowed to connect to. Only applies when mode is \\\"custom\\\". Supports wildcard patterns (e.g., \\\"*.example.com\\\" matches all subdomains).", "type": "array", "example": [ "api.github.com", "*.npmjs.org" ], "items": { "type": "string", "description": "A domain name pattern. Use \\\"*\\\" for wildcard matching of subdomains (e.g., \\\"*.example.com\\\")." } }, "allowedCIDRs": { "description": "List of IP address ranges (in CIDR notation) the sandbox is allowed to connect to. Traffic to these addresses bypasses domain-based restrictions.", "type": "array", "example": [ "35.192.0.0/12", "104.16.0.0/12" ], "items": { "type": "string", "description": "An IPv4 address range in CIDR notation (e.g., \\\"35.192.0.0/12\\\")." } }, "deniedCIDRs": { "description": "List of IP address ranges (in CIDR notation) the sandbox is blocked from connecting to. These rules take precedence over all allowed rules.", "type": "array", "example": [ "35.192.0.0/12" ], "items": { "type": "string", "description": "An IP address range in CIDR notation to block." } } } }, "env": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Default environment variables for the sandbox. These are inherited by all commands unless overridden.", "default": {}, "example": { "NODE_ENV": "production", "HELLO": "world" } }, "name": { "description": "Name for the sandbox. Must be unique per project and URL-safe (alphanumeric, hyphens, underscores).", "type": "string", "pattern": "^[a-zA-Z0-9_-]+$", "maxLength": 128, "example": "my-sandbox" }, "persistent": { "description": "Whether the sandbox persists its state across restarts via automatic snapshots. Defaults to true.", "type": "boolean", "default": true }, "snapshotExpiration": { "description": "Default snapshot expiration time in milliseconds. Set to 0 to disable expiration. When set, this value is used as the default expiration for all snapshots created for this sandbox.", "oneOf": [ {}, { "type": "integer" } ], "example": 604800000 }, "tags": { "description": "Key-value tags to associate with the sandbox. Maximum 5 tags.", "type": "object", "maxProperties": 5, "additionalProperties": { "type": "string", "maxLength": 256 }, "example": { "env": "staging", "team": "platform" } } } } } } } } }, "/v2/sandboxes/snapshots": { "get": { "description": "Retrieves a paginated list of snapshots for a specific project.", "operationId": "listSessionSnapshots", "security": [ { "bearerToken": [] } ], "summary": "List snapshots", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "snapshots": { "items": { "$ref": "#/components/schemas/Snapshot" }, "type": "array" }, "pagination": { "properties": { "count": { "type": "number" }, "next": { "nullable": true, "type": "string" } }, "required": [ "count", "next" ], "type": "object" } }, "required": [ "pagination", "snapshots" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "project", "description": "The unique identifier or name of the project to list snapshots for.", "in": "query", "required": false, "schema": { "description": "The unique identifier or name of the project to list snapshots for.", "type": "string", "example": "prj_abc123" } }, { "name": "name", "description": "Name for the sandbox. Must be unique per project and URL-safe (alphanumeric, hyphens, underscores).", "in": "query", "required": false, "schema": { "description": "Name for the sandbox. Must be unique per project and URL-safe (alphanumeric, hyphens, underscores).", "type": "string", "pattern": "^[a-zA-Z0-9_-]+$", "maxLength": 128, "example": "my-sandbox" } }, { "name": "limit", "description": "Maximum number of snapshots to return in the response. Used for pagination.", "in": "query", "required": false, "schema": { "description": "Maximum number of snapshots to return in the response. Used for pagination.", "type": "number", "minimum": 1, "maximum": 50, "default": 20, "example": 20 } }, { "name": "cursor", "description": "Opaque pagination cursor from a previous response.", "in": "query", "required": false, "schema": { "description": "Opaque pagination cursor from a previous response.", "type": "string" } }, { "name": "sortOrder", "description": "Sort direction for results by creation time.", "in": "query", "required": false, "schema": { "description": "Sort direction for results by creation time.", "type": "string", "enum": [ "asc", "desc" ], "default": "desc" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listSessionSnapshots", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.listSessionSnapshots({\n project: \"prj_abc123\",\n name: \"my-sandbox\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/snapshots/{snapshotId}": { "get": { "description": "Retrieves detailed information about a specific snapshot, including its creation time, size, expiration date, and the source session it was created from.", "operationId": "getSessionSnapshot", "security": [ { "bearerToken": [] } ], "summary": "Get a snapshot", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "snapshot": { "$ref": "#/components/schemas/Snapshot" } }, "required": [ "snapshot" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "snapshotId", "description": "The unique identifier of the snapshot to retrieve.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the snapshot to retrieve.", "example": "snap_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getSessionSnapshot", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.getSessionSnapshot({\n snapshotId: \"snap_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Permanently deletes a snapshot and frees its associated storage. This action cannot be undone. After deletion, the snapshot can no longer be used to create new sessions.", "operationId": "deleteSessionSnapshot", "security": [ { "bearerToken": [] } ], "summary": "Delete a snapshot", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "snapshot": { "$ref": "#/components/schemas/Snapshot" } }, "required": [ "snapshot" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "snapshotId", "description": "The unique identifier of the snapshot to delete.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the snapshot to delete.", "example": "snap_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteSessionSnapshot", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.deleteSessionSnapshot({\n snapshotId: \"snap_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions": { "get": { "description": "Retrieves a paginated list of sessions belonging to a specific sandbox. Results are sorted by creation time and paginated using an opaque cursor.", "operationId": "listSessions", "security": [ { "bearerToken": [] } ], "summary": "List sessions", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "The list of sessions matching the request filters.", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "sessions": { "items": { "$ref": "#/components/schemas/Session" }, "type": "array" }, "pagination": { "properties": { "count": { "type": "number" }, "next": { "nullable": true, "type": "string" } }, "required": [ "count", "next" ], "type": "object" } }, "required": [ "pagination", "sessions" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "project", "description": "The unique identifier or name of the project to list sessions for.", "in": "query", "required": false, "schema": { "description": "The unique identifier or name of the project to list sessions for.", "type": "string", "example": "prj_abc123" } }, { "name": "name", "description": "Filter sessions by sandbox name. Only sessions belonging to the specified sandbox are returned.", "in": "query", "required": false, "schema": { "description": "Filter sessions by sandbox name. Only sessions belonging to the specified sandbox are returned.", "type": "string", "pattern": "^[a-zA-Z0-9_-]+$", "maxLength": 128, "example": "my-sandbox" } }, { "name": "limit", "description": "Maximum number of sessions to return in the response. Used for pagination.", "in": "query", "required": false, "schema": { "description": "Maximum number of sessions to return in the response. Used for pagination.", "type": "number", "minimum": 1, "maximum": 50, "default": 20, "example": 20 } }, { "name": "cursor", "description": "Opaque pagination cursor from a previous response.", "in": "query", "required": false, "schema": { "description": "Opaque pagination cursor from a previous response.", "type": "string" } }, { "name": "sortOrder", "description": "Sort direction for results by creation time.", "in": "query", "required": false, "schema": { "description": "Sort direction for results by creation time.", "type": "string", "enum": [ "asc", "desc" ], "default": "desc" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listSessions", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.listSessions({\n project: \"prj_abc123\",\n name: \"my-sandbox\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}": { "get": { "description": "Retrieves detailed information about a specific session, including its current status, resource configuration, and exposed routes.", "operationId": "getSession", "security": [ { "bearerToken": [] } ], "summary": "Get a session", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "The session was retrieved successfully.", "content": { "application/json": { "schema": { "properties": { "session": { "$ref": "#/components/schemas/Session" }, "routes": { "items": { "$ref": "#/components/schemas/SandboxPublicRoute" }, "type": "array" } }, "required": [ "routes", "session" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "500": { "description": "" } }, "parameters": [ { "name": "sessionId", "description": "The unique identifier of the session to retrieve.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session to retrieve.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getSession", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.getSession({\n sessionId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/{name}": { "get": { "description": "Retrieves a named sandbox by name, including its current sandbox and routes. If the sandbox is stopped and resume is true, a new sandbox will be created from the most recent snapshot.", "operationId": "getNamedSandbox", "security": [ { "bearerToken": [] } ], "summary": "Get a named sandbox", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "sandbox": { "$ref": "#/components/schemas/NamedSandbox" }, "session": { "$ref": "#/components/schemas/Session" }, "routes": { "items": { "$ref": "#/components/schemas/SandboxPublicRoute" }, "type": "array" }, "resumed": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "resumed", "routes", "sandbox", "session" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "429": { "description": "The concurrency limit has been exceeded." }, "500": { "description": "" } }, "parameters": [ { "name": "name", "description": "Name for the sandbox. Must be unique per project and URL-safe (alphanumeric, hyphens, underscores).", "in": "path", "required": true, "schema": { "description": "Name for the sandbox. Must be unique per project and URL-safe (alphanumeric, hyphens, underscores).", "type": "string", "pattern": "^[a-zA-Z0-9_-]+$", "maxLength": 128, "example": "my-sandbox" } }, { "name": "projectId", "description": "The project ID or name (required when not using OIDC token).", "in": "query", "required": false, "schema": { "type": "string", "description": "The project ID or name (required when not using OIDC token).", "example": "prj_abc123" } }, { "name": "resume", "description": "Whether to automatically resume a stopped named sandbox by creating a new instance from its snapshot. Defaults to false.", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "description": "Whether to automatically resume a stopped named sandbox by creating a new instance from its snapshot. Defaults to false." } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getNamedSandbox", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.getNamedSandbox({\n name: \"my-sandbox\",\n projectId: \"prj_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Updates the configuration of a sandbox. Only the provided fields will be modified; omitted fields remain unchanged.", "operationId": "updateSandbox", "security": [ { "bearerToken": [] } ], "summary": "Update a sandbox", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "sandbox": { "$ref": "#/components/schemas/NamedSandbox" } }, "required": [ "sandbox" ], "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": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "name", "description": "The sandbox to update.", "in": "path", "required": true, "schema": { "type": "string", "description": "The sandbox to update.", "pattern": "^[a-zA-Z0-9_-]+$", "maxLength": 128, "example": "my-sandbox" } }, { "name": "projectId", "description": "The project ID that owns the named sandbox. When provided, takes precedence over OIDC project context.", "in": "query", "required": false, "schema": { "type": "string", "description": "The project ID that owns the named sandbox. When provided, takes precedence over OIDC project context.", "maxLength": 128 } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "resources": { "description": "Resources to define the VM", "additionalProperties": false, "type": "object", "properties": { "vcpus": { "description": "The number of virtual CPUs to allocate to the sandbox. Must be 1, or an even number.", "type": "integer", "minimum": 1, "example": 2 }, "memory": { "description": "The amount of memory in megabytes to allocate to the sandbox. Must equal vcpus * 2048.", "type": "integer", "minimum": 2048, "example": 4096 } } }, "runtime": { "description": "The runtime environment for the sandbox. Determines the pre-installed language runtimes and tools available.", "type": "string", "enum": [ "node22", "node24", "python3.13" ], "example": "node24" }, "timeout": { "type": "integer", "description": "Maximum duration in milliseconds that the sandbox can run before being automatically stopped.", "minimum": 1000, "example": 300000 }, "persistent": { "type": "boolean", "description": "Whether the sandbox persists its state across restarts via automatic snapshots." }, "snapshotExpiration": { "description": "Default snapshot expiration time in milliseconds. Set to 0 to disable expiration. When set, this value is used as the default expiration for all snapshots created for this sandbox.", "oneOf": [ {}, { "type": "integer" } ], "example": 604800000 }, "networkPolicy": { "description": "Network access policy for the sandbox.\\n Controls which external hosts the sandbox can communicate with.\\n Use \\\"allow-all\\\" mode to allow all traffic, \\\"deny-all\\\" to block all traffic or \\\"custom\\\" to provide specific rules.", "type": "object", "additionalProperties": false, "required": [ "mode" ], "properties": { "mode": { "description": "The network access policy mode. Use \\\"allow-all\\\" to permit all outbound traffic. Use \\\"deny-all\\\" to block all outbound traffic. Use \\\"custom\\\" to specify explicit allow/deny rules.", "type": "string", "enum": [ "allow-all", "deny-all", "custom", "default-allow", "default-deny" ], "example": "custom" }, "allowedDomains": { "description": "List of domain names the sandbox is allowed to connect to. Only applies when mode is \\\"custom\\\". Supports wildcard patterns (e.g., \\\"*.example.com\\\" matches all subdomains).", "type": "array", "example": [ "api.github.com", "*.npmjs.org" ], "items": { "type": "string", "description": "A domain name pattern. Use \\\"*\\\" for wildcard matching of subdomains (e.g., \\\"*.example.com\\\")." } }, "allowedCIDRs": { "description": "List of IP address ranges (in CIDR notation) the sandbox is allowed to connect to. Traffic to these addresses bypasses domain-based restrictions.", "type": "array", "example": [ "35.192.0.0/12", "104.16.0.0/12" ], "items": { "type": "string", "description": "An IPv4 address range in CIDR notation (e.g., \\\"35.192.0.0/12\\\")." } }, "deniedCIDRs": { "description": "List of IP address ranges (in CIDR notation) the sandbox is blocked from connecting to. These rules take precedence over all allowed rules.", "type": "array", "example": [ "35.192.0.0/12" ], "items": { "type": "string", "description": "An IP address range in CIDR notation to block." } } } }, "env": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Default environment variables for the sandbox. Set to empty object to clear.", "example": { "NODE_ENV": "production", "HELLO": "world" } }, "currentSnapshotId": { "type": "string", "maxLength": 128, "description": "The snapshot ID to set as the current snapshot. Must be active and belong to the same project." }, "tags": { "description": "Key-value tags to associate with the sandbox. Replaces existing tags. Set to empty object to clear. Maximum 5 tags.", "type": "object", "maxProperties": 5, "additionalProperties": { "type": "string", "maxLength": 256 }, "example": { "env": "staging", "team": "platform" } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateSandbox", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.updateSandbox({\n name: \"my-sandbox\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n resources: {\n vcpus: 2,\n memory: 4096,\n },\n runtime: \"node24\",\n timeout: 300000,\n snapshotExpiration: 604800000,\n networkPolicy: {\n mode: \"custom\",\n allowedDomains: [\n \"api.github.com\",\n \"*.npmjs.org\",\n ],\n allowedCIDRs: [\n \"35.192.0.0/12\",\n \"104.16.0.0/12\",\n ],\n deniedCIDRs: [\n \"35.192.0.0/12\",\n ],\n },\n env: {\n \"NODE_ENV\": \"production\",\n \"HELLO\": \"world\",\n },\n tags: {\n \"env\": \"staging\",\n \"team\": \"platform\",\n },\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Deletes a sandbox by name. If sandboxes are currently running, they will be stopped first. This operation deletes all sandbox entities with the given name and the named sandbox metadata.", "operationId": "deleteSandbox", "security": [ { "bearerToken": [] } ], "summary": "Delete a sandbox", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "sandbox": { "$ref": "#/components/schemas/NamedSandbox" } }, "required": [ "sandbox" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "name", "description": "The sandbox name to delete.", "in": "path", "required": true, "schema": { "type": "string", "description": "The sandbox name to delete.", "pattern": "^[a-zA-Z0-9_-]+$", "maxLength": 128, "example": "my-sandbox" } }, { "name": "projectId", "description": "The project ID that owns the named sandbox. When provided, takes precedence over OIDC project context.", "in": "query", "required": false, "schema": { "type": "string", "description": "The project ID that owns the named sandbox. When provided, takes precedence over OIDC project context.", "maxLength": 128 } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteSandbox", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.deleteSandbox({\n name: \"my-sandbox\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}/cmd": { "get": { "description": "Retrieves a list of all commands that have been executed in a session, including their current status, exit codes, and execution times, ordered from the most recent to the oldest.", "operationId": "listSessionCommands", "security": [ { "bearerToken": [] } ], "summary": "List commands", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "The list of commands executed in the session.", "content": { "application/json": { "schema": { "properties": { "commands": { "items": { "$ref": "#/components/schemas/SessionCommand" }, "type": "array" } }, "required": [ "commands" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "name": "sessionId", "description": "The unique identifier of the session to list commands for.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session to list commands for.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listSessionCommands", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.listSessionCommands({\n sessionId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Executes a shell command inside a running session. The command runs asynchronously and returns immediately with a command ID that can be used to track its progress and retrieve its output. Optionally, use the `wait` parameter to stream the command status until completion.", "operationId": "runSessionCommand", "security": [ { "bearerToken": [] } ], "summary": "Execute a command", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "command": { "$ref": "#/components/schemas/SessionCommand" } }, "required": [ "command" ], "type": "object" } }, "application/x-ndjson": { "schema": { "properties": { "command": { "$ref": "#/components/schemas/SessionCommand" } }, "required": [ "command" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sessionId", "description": "The unique identifier of the session in which to execute the command.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session in which to execute the command.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "command" ], "properties": { "command": { "type": "string", "description": "The executable or shell command to run. This is the program name without arguments.", "example": "npm" }, "args": { "type": "array", "items": { "type": "string" }, "description": "Arguments to pass to the command. Each argument should be a separate array element.", "example": [ "install", "--save", "lodash" ] }, "cwd": { "type": "string", "description": "The working directory in which to execute the command. Defaults to the sandbox home directory if not specified.", "example": "/home/vercel-sandbox" }, "env": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Additional environment variables to set for this command. These are merged with the sandbox environment.", "default": {}, "example": { "NODE_ENV": "production", "DEBUG": "true" } }, "sudo": { "type": "boolean", "description": "Execute the command with root (superuser) privileges.", "default": false }, "wait": { "type": "boolean", "description": "If true, returns an ND-JSON stream that emits the command status when started and again when finished. Useful for synchronously waiting for command completion.", "default": false } } } } } }, "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "runSessionCommand", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.runSessionCommand({\n sessionId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n command: \"npm\",\n args: [\n \"install\",\n \"--save\",\n \"lodash\",\n ],\n cwd: \"/home/vercel-sandbox\",\n env: {\n \"NODE_ENV\": \"production\",\n \"DEBUG\": \"true\",\n },\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}/cmd/{cmdId}": { "get": { "description": "Retrieves the current status and details of a command executed in a session. Use the `wait` parameter to block until the command finishes execution.", "operationId": "getSessionCommand", "security": [ { "bearerToken": [] } ], "summary": "Get a command", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "The command data along with the exit code if the command did finish.", "content": { "application/json": { "schema": { "properties": { "command": { "$ref": "#/components/schemas/SessionCommand" } }, "required": [ "command" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sessionId", "description": "The unique identifier of the session containing the command.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session containing the command.", "example": "sbx_abc123" } }, { "name": "cmdId", "description": "The unique identifier of the command to retrieve.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the command to retrieve.", "example": "cmd_abc123" } }, { "name": "wait", "description": "If set to \"true\", the request will block until the command finishes execution. Useful for synchronously waiting for command completion.", "in": "query", "required": false, "schema": { "type": "string", "description": "If set to \"true\", the request will block until the command finishes execution. Useful for synchronously waiting for command completion.", "enum": [ "true", "false" ], "default": "false" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getSessionCommand", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.getSessionCommand({\n sessionId: \"sbx_abc123\",\n cmdId: \"cmd_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}/cmd/{cmdId}/kill": { "post": { "description": "Sends a signal to terminate a running command in a session. The signal can be used to gracefully stop (SIGTERM) or forcefully kill (SIGKILL) the process. The command must still be running for this operation to succeed.", "operationId": "killSessionCommand", "security": [ { "bearerToken": [] } ], "summary": "Kill a command", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "The command was terminated successfully.", "content": { "application/json": { "schema": { "properties": { "command": { "$ref": "#/components/schemas/SessionCommand" } }, "required": [ "command" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "cmdId", "description": "The unique identifier of the command to terminate.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the command to terminate.", "example": "cmd_abc123" } }, { "name": "sessionId", "description": "The unique identifier of the session containing the command.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session containing the command.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "signal" ], "properties": { "signal": { "type": "number", "description": "The POSIX signal number to send to the process. Common values: 15 (SIGTERM) for graceful termination, 9 (SIGKILL) for forced termination.", "example": 15 } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "killSessionCommand", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.killSessionCommand({\n cmdId: \"cmd_abc123\",\n sessionId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n signal: 15,\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}/cmd/{cmdId}/logs": { "get": { "description": "Streams the output of a command in real-time using newline-delimited JSON (ND-JSON). Each entry includes the output data and stream type. Stream types include `stdout`, `stderr`, and `error` (for stream failures).", "operationId": "getSessionCommandLogs", "security": [ { "bearerToken": [] } ], "summary": "Stream command logs", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "", "content": { "application/x-ndjson": { "schema": { "oneOf": [ { "properties": { "stream": { "type": "string" }, "data": { "properties": { "code": { "type": "string", "enum": [ "sandbox_stream_closed" ] }, "message": { "type": "string", "enum": [ "Sandbox stream was closed and is not accepting commands." ] } }, "required": [ "code", "message" ], "type": "object" } }, "required": [ "data", "stream" ], "type": "object" }, { "properties": { "data": { "type": "string" }, "stream": { "type": "string" } }, "required": [ "data", "stream" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sessionId", "description": "The unique identifier of the session containing the command.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session containing the command.", "example": "sbx_abc123" } }, { "name": "cmdId", "description": "The unique identifier of the command to stream logs for.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the command to stream logs for.", "example": "cmd_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getSessionCommandLogs", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.getSessionCommandLogs({\n sessionId: \"sbx_abc123\",\n cmdId: \"cmd_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n for await (const event of result) {\n // Handle the event\n console.log(event);\n }\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}/stop": { "post": { "description": "Stops a running session and releases its allocated resources. All running processes within the session will be terminated. This action cannot be undone. A stopped session cannot be restarted.", "operationId": "stopSession", "security": [ { "bearerToken": [] } ], "summary": "Stop a session", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "The session was stopped successfully.", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "session": { "$ref": "#/components/schemas/Session" } }, "required": [ "session" ], "type": "object" }, { "properties": { "snapshot": { "$ref": "#/components/schemas/Snapshot" }, "sandbox": { "$ref": "#/components/schemas/NamedSandbox" }, "session": { "$ref": "#/components/schemas/Session" } }, "required": [ "sandbox", "session", "snapshot" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "sessionId", "description": "The unique identifier of the session to stop.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session to stop.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "stopSession", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.stopSession({\n sessionId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}/extend-timeout": { "post": { "description": "Extends the maximum execution time of a running session. The session must be active and able to accept commands. The total timeout cannot exceed the maximum allowed limit for your account.", "operationId": "extendSessionTimeout", "security": [ { "bearerToken": [] } ], "summary": "Extend session timeout", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "The session timeout was extended successfully.", "content": { "application/json": { "schema": { "properties": { "session": { "$ref": "#/components/schemas/Session" } }, "required": [ "session" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "sessionId", "description": "The unique identifier of the session to extend the timeout for.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session to extend the timeout for.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "duration" ], "properties": { "duration": { "type": "number", "description": "The amount of time in milliseconds to add to the current timeout. Must be at least 1000ms (1 second).", "minimum": 1000, "example": 300000 } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "extendSessionTimeout", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.extendSessionTimeout({\n sessionId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n duration: 300000,\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}/network-policy": { "post": { "description": "Replaces the network access policy of a running session. Use this to control which external hosts the session can communicate with. This is a full replacement. Any previously configured network rules will be overwritten.", "operationId": "updateSessionNetworkPolicy", "security": [ { "bearerToken": [] } ], "summary": "Update network policy", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "The session network policy was updated successfully.", "content": { "application/json": { "schema": { "properties": { "session": { "$ref": "#/components/schemas/Session" } }, "required": [ "session" ], "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": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "sessionId", "description": "The unique identifier of the session to update the network policy for.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session to update the network policy for.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "description": "Network access policy for the sandbox.\n Controls which external hosts the sandbox can communicate with.\n Use \"allow-all\" mode to allow all traffic, \"deny-all\" to block all traffic or \"custom\" to provide specific rules.", "type": "object", "additionalProperties": false, "required": [ "mode" ], "properties": { "mode": { "description": "The network access policy mode. Use \"allow-all\" to permit all outbound traffic. Use \"deny-all\" to block all outbound traffic. Use \"custom\" to specify explicit allow/deny rules.", "type": "string", "enum": [ "allow-all", "deny-all", "custom", "default-allow", "default-deny" ], "example": "custom" }, "allowedDomains": { "description": "List of domain names the sandbox is allowed to connect to. Only applies when mode is \"custom\". Supports wildcard patterns (e.g., \"*.example.com\" matches all subdomains).", "type": "array", "example": [ "api.github.com", "*.npmjs.org" ], "items": { "type": "string", "description": "A domain name pattern. Use \"*\" for wildcard matching of subdomains (e.g., \"*.example.com\")." } }, "allowedCIDRs": { "description": "List of IP address ranges (in CIDR notation) the sandbox is allowed to connect to. Traffic to these addresses bypasses domain-based restrictions.", "type": "array", "example": [ "35.192.0.0/12", "104.16.0.0/12" ], "items": { "type": "string", "description": "An IPv4 address range in CIDR notation (e.g., \"35.192.0.0/12\")." } }, "deniedCIDRs": { "description": "List of IP address ranges (in CIDR notation) the sandbox is blocked from connecting to. These rules take precedence over all allowed rules.", "type": "array", "example": [ "35.192.0.0/12" ], "items": { "type": "string", "description": "An IP address range in CIDR notation to block." } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateSessionNetworkPolicy", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.updateSessionNetworkPolicy({\n sessionId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n mode: \"custom\",\n allowedDomains: [\n \"api.github.com\",\n \"*.npmjs.org\",\n ],\n allowedCIDRs: [\n \"35.192.0.0/12\",\n \"104.16.0.0/12\",\n ],\n deniedCIDRs: [\n \"35.192.0.0/12\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}/fs/read": { "post": { "description": "Downloads the contents of a file from a session's filesystem. The file content is returned as a binary stream with appropriate Content-Disposition headers for file download.", "operationId": "readSessionFile", "security": [ { "bearerToken": [] } ], "summary": "Read a file", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sessionId", "description": "The unique identifier of the session to read the file from.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session to read the file from.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "path" ], "properties": { "cwd": { "description": "The base directory for resolving relative paths. If not specified, paths are resolved from the sandbox home directory.", "type": "string", "example": "/home/vercel-sandbox" }, "path": { "description": "The path of the file to read. Can be absolute or relative to the working directory.", "type": "string", "example": "dist/agent-output.md" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "readSessionFile", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.readSessionFile({\n sessionId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n cwd: \"/home/vercel-sandbox\",\n path: \"dist/agent-output.md\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}/fs/mkdir": { "post": { "description": "Creates a new directory in a session's filesystem. By default, parent directories are created recursively if they don't exist (similar to `mkdir -p`).", "operationId": "createSessionDirectory", "security": [ { "bearerToken": [] } ], "summary": "Create a directory", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "The directory was created successfully.", "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "sessionId", "description": "The unique identifier of the session to create the directory in.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session to create the directory in.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "path" ], "properties": { "cwd": { "description": "The base directory for resolving relative paths. If not specified, paths are resolved from the sandbox home directory.", "type": "string", "example": "/home/vercel-sandbox" }, "path": { "description": "The path of the directory to create. Can be absolute or relative to the working directory.", "type": "string", "example": "src/components" }, "recursive": { "description": "If true, creates parent directories as needed (like `mkdir -p`). If false, fails if parent directories do not exist.", "type": "boolean", "default": true } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createSessionDirectory", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.createSessionDirectory({\n sessionId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n cwd: \"/home/vercel-sandbox\",\n path: \"src/components\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}/fs/write": { "post": { "description": "Uploads and extracts files to a session's filesystem. Files must be uploaded as a gzipped tarball (`.tar.gz`) with the `Content-Type` header set to `application/gzip`. The tarball contents are extracted to the session's working directory, or to a custom directory specified via the `x-cwd` header.", "operationId": "writeSessionFiles", "security": [ { "bearerToken": [] } ], "summary": "Write files", "tags": [ "sandboxes-v2-beta" ], "responses": { "200": { "description": "The files were successfully written to the session.", "content": { "application/json": { "schema": { "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" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "in": "header", "description": "The target directory where the tarball contents will be extracted. If not specified, files are extracted to the sandbox home directory.", "schema": { "type": "string", "description": "The target directory where the tarball contents will be extracted. If not specified, files are extracted to the sandbox home directory.", "example": "/home/vercel-sandbox" }, "name": "'x-Cwd'" }, { "name": "sessionId", "description": "The unique identifier of the session to write files to.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session to write files to.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "writeSessionFiles", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.writeSessionFiles({\n xCwd: \"/home/vercel-sandbox\",\n sessionId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/sandboxes/sessions/{sessionId}/snapshot": { "post": { "description": "Creates a point-in-time snapshot of a running session's filesystem. Snapshots can be used to quickly restore a session to a previous state or to create new sessions with pre-configured environments. The session must be running and able to accept commands for a snapshot to be created. The session will be terminated after the snapshot is created.", "operationId": "createSessionSnapshot", "security": [ { "bearerToken": [] } ], "summary": "Create a snapshot", "tags": [ "sandboxes-v2-beta" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "snapshot": { "$ref": "#/components/schemas/Snapshot" }, "session": { "$ref": "#/components/schemas/Session" } }, "required": [ "session", "snapshot" ], "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": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" }, "422": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "sessionId", "description": "The unique identifier of the session to snapshot.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the session to snapshot.", "example": "sbx_abc123" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "expiration": { "description": "The number of milliseconds after which the snapshot will expire and be deleted. Use 0 for no expiration.", "oneOf": [ {}, { "type": "integer" } ] } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createSessionSnapshot", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.sandboxesV2Beta.createSessionSnapshot({\n sessionId: \"sbx_abc123\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" } }, "required": [ "attackModeEnabled", "attackModeUpdatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "oneOf": [ { "required": [ "projectId", "attackModeEnabled", "attackModeActiveUntil" ], "properties": { "projectId": { "type": "string" }, "attackModeEnabled": { "type": "boolean" }, "attackModeActiveUntil": { "type": "number" } } }, { "type": "object", "required": [ "projectId", "attackModeEnabled" ], "properties": { "projectId": { "type": "string" }, "attackModeEnabled": { "type": "boolean" } } } ] } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateAttackChallengeMode", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.security.updateAttackChallengeMode({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n projectId: \"\",\n attackModeEnabled: false,\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "updateAttackChallengeMode", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Security.UpdateAttackChallengeMode(ctx, nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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", "enum": [ false, true ] }, "crs": { "properties": { "sd": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Scanner Detection - Detect and prevent reconnaissance activities from network scanning tools." }, "ma": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Multipart Attack - Block attempts to bypass security controls using multipart/form-data encoding." }, "lfi": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Local File Inclusion Attack - Prevent unauthorized access to local files through web applications." }, "rfi": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Remote File Inclusion Attack - Prohibit unauthorized upload or execution of remote files." }, "rce": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Remote Execution Attack - Prevent unauthorized execution of remote scripts or commands." }, "php": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "PHP Attack - Safeguard against vulnerability exploits in PHP-based applications." }, "gen": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Generic Attack - Provide broad protection from various undefined or novel attack vectors." }, "xss": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "XSS Attack - Prevent injection of malicious scripts into trusted webpages." }, "sqli": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "SQL Injection Attack - Prohibit unauthorized use of SQL commands to manipulate databases." }, "sf": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Session Fixation Attack - Prevent unauthorized takeover of user sessions by enforcing unique session IDs." }, "java": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Java Attack - Mitigate risks of exploitation targeting Java-based applications or components." } }, "required": [ "gen", "java", "lfi", "ma", "php", "rce", "rfi", "sd", "sf", "sqli", "xss" ], "type": "object", "description": "Custom Ruleset" }, "rules": { "items": { "oneOf": [ { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "active": { "type": "boolean", "enum": [ false, true ] }, "conditionGroup": { "items": { "properties": { "conditions": { "items": { "properties": { "type": { "type": "string", "enum": [ "host", "path", "method", "header", "query", "cookie", "target_path", "route", "raw_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", "server_action", "bot_name", "bot_category", "bot_status", "bot_protection" ] }, "op": { "type": "string", "enum": [ "sub", "re", "eq", "ex", "inc", "pre", "suf", "gt", "gte", "lt", "lte", "nex", "ninc", "neq" ] }, "neg": { "type": "boolean", "enum": [ false, true ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "items": { "type": "string" }, "type": "array" } ] } }, "required": [ "op", "type" ], "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", null ] } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "redirect": { "nullable": true, "properties": { "location": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "location", "permanent" ], "type": "object" }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action" ], "type": "object" } }, "type": "object" }, "valid": { "type": "boolean", "enum": [ true ] }, "validationErrors": { "nullable": true } }, "required": [ "action", "active", "conditionGroup", "id", "name", "valid", "validationErrors" ], "type": "object" }, { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "active": { "type": "boolean", "enum": [ false, true ] }, "conditionGroup": { "items": { "properties": { "conditions": { "items": { "properties": { "type": { "type": "string", "enum": [ "host", "path", "method", "header", "query", "cookie", "target_path", "route", "raw_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", "server_action", "bot_name", "bot_category", "bot_status", "bot_protection" ] }, "op": { "type": "string", "enum": [ "sub", "re", "eq", "ex", "inc", "pre", "suf", "gt", "gte", "lt", "lte", "nex", "ninc", "neq" ] }, "neg": { "type": "boolean", "enum": [ false, true ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "items": { "type": "string" }, "type": "array" } ] } }, "required": [ "op", "type" ], "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", null ] } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "redirect": { "nullable": true, "properties": { "location": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "location", "permanent" ], "type": "object" }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action" ], "type": "object" } }, "type": "object" }, "valid": { "type": "boolean", "enum": [ false ] }, "validationErrors": { "items": { "type": "string" }, "type": "array" } }, "required": [ "action", "active", "conditionGroup", "id", "name", "valid", "validationErrors" ], "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": [ "action", "hostname", "id", "ip" ], "type": "object" }, "type": "array" }, "changes": { "items": { "type": "object" }, "type": "array" }, "managedRules": { "properties": { "bot_protection": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log", "challenge" ] }, "updatedAt": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log", "challenge" ] }, "updatedAt": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log", "challenge" ] }, "updatedAt": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "required": [ "active" ], "type": "object" }, "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log", "challenge" ] }, "updatedAt": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "required": [ "active" ], "type": "object" } }, "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "changes", "crs", "firewallEnabled", "id", "ips", "ownerId", "projectKey", "rules", "updatedAt", "version" ], "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": "The request is not authorized." }, "402": { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "firewallEnabled": { "type": "boolean" }, "managedRules": { "type": "object" }, "crs": { "type": "object", "properties": { "sd": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "active", "action" ], "additionalProperties": false, "description": "Scanner Detection - Detect and prevent reconnaissance activities from network scanning tools." }, "ma": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "active", "action" ], "additionalProperties": false, "description": "Multipart Attack - Block attempts to bypass security controls using multipart/form-data encoding." }, "lfi": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "active", "action" ], "additionalProperties": false, "description": "Local File Inclusion Attack - Prevent unauthorized access to local files through web applications." }, "rfi": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "active", "action" ], "additionalProperties": false, "description": "Remote File Inclusion Attack - Prohibit unauthorized upload or execution of remote files." }, "rce": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "active", "action" ], "additionalProperties": false, "description": "Remote Execution Attack - Prevent unauthorized execution of remote scripts or commands." }, "php": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "active", "action" ], "additionalProperties": false, "description": "PHP Attack - Safeguard against vulnerability exploits in PHP-based applications." }, "gen": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "active", "action" ], "additionalProperties": false, "description": "Generic Attack - Provide broad protection from various undefined or novel attack vectors." }, "xss": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "active", "action" ], "additionalProperties": false, "description": "XSS Attack - Prevent injection of malicious scripts into trusted webpages." }, "sqli": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "active", "action" ], "additionalProperties": false, "description": "SQL Injection Attack - Prohibit unauthorized use of SQL commands to manipulate databases." }, "sf": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "active", "action" ], "additionalProperties": false, "description": "Session Fixation Attack - Prevent unauthorized takeover of user sessions by enforcing unique session IDs." }, "java": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "active", "action" ], "additionalProperties": false, "description": "Java Attack - Mitigate risks of exploitation targeting Java-based applications or components." } }, "additionalProperties": false, "description": "Custom Ruleset" }, "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", "route", "raw_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", "server_action", "bot_name", "bot_category", "bot_status", "bot_protection" ], "description": "[Parameter](https://vercel.com/docs/security/vercel-waf/rule-configuration#parameters) from the incoming traffic." }, "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" }, "maxItems": 75 }, { "type": "number" } ] } }, "required": [ "type", "op" ], "additionalProperties": false }, "maxItems": 65 } }, "required": [ "conditions" ], "additionalProperties": false }, "maxItems": 25 }, "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", "enum": [ "log", "challenge", "deny", "rate_limit" ] }, {} ], "nullable": true } }, "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 }, "bypassSystem": { "type": "boolean", "nullable": true }, "logHeaders": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } }, "required": [ "action" ], "additionalProperties": false } }, "additionalProperties": false }, "valid": { "type": "boolean" }, "validationErrors": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } }, "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 } }, "botIdEnabled": { "type": "boolean" }, "logHeaders": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } }, "required": [ "firewallEnabled" ], "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "putFirewallConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.security.putFirewallConfig({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n firewallEnabled: true,\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "putFirewallConfig", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Security.PutFirewallConfig(ctx, \"\", nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "402": { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "oneOf": [ { "description": "Enable Firewall", "type": "object", "properties": { "action": { "type": "string", "enum": [ "firewallEnabled" ] }, "id": { "nullable": true }, "value": { "type": "boolean" } }, "required": [ "action", "value" ], "additionalProperties": false }, { "description": "Add a custom rule", "type": "object", "properties": { "action": { "type": "string", "enum": [ "rules.insert" ] }, "id": { "nullable": true }, "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", "route", "raw_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", "server_action", "bot_name", "bot_category", "bot_status", "bot_protection" ] }, "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" }, "maxItems": 75 }, { "type": "number" } ] } }, "required": [ "type", "op" ], "additionalProperties": false }, "maxItems": 65 } }, "required": [ "conditions" ], "additionalProperties": false }, "maxItems": 25 }, "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", "enum": [ "log", "challenge", "deny", "rate_limit" ] }, {} ], "nullable": true } }, "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 }, "bypassSystem": { "type": "boolean", "nullable": true }, "logHeaders": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } }, "required": [ "action" ], "additionalProperties": false } }, "additionalProperties": false }, "valid": { "type": "boolean" }, "validationErrors": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } }, "required": [ "name", "active", "conditionGroup", "action" ], "additionalProperties": false } }, "required": [ "action", "value" ], "additionalProperties": false }, { "description": "Update a custom rule", "type": "object", "properties": { "action": { "type": "string", "enum": [ "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", "route", "raw_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", "server_action", "bot_name", "bot_category", "bot_status", "bot_protection" ] }, "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" }, "maxItems": 75 }, { "type": "number" } ] } }, "required": [ "type", "op" ], "additionalProperties": false }, "maxItems": 65 } }, "required": [ "conditions" ], "additionalProperties": false }, "maxItems": 25 }, "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", "enum": [ "log", "challenge", "deny", "rate_limit" ] }, {} ], "nullable": true } }, "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 }, "bypassSystem": { "type": "boolean", "nullable": true }, "logHeaders": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] } }, "required": [ "action" ], "additionalProperties": false } }, "additionalProperties": false }, "valid": { "type": "boolean" }, "validationErrors": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } }, "required": [ "name", "active", "conditionGroup", "action" ], "additionalProperties": false } }, "required": [ "action", "id", "value" ], "additionalProperties": false }, { "description": "Remove a custom rule", "type": "object", "properties": { "action": { "type": "string", "enum": [ "rules.remove" ] }, "id": { "type": "string" }, "value": { "nullable": true } }, "required": [ "action", "id" ], "additionalProperties": false }, { "description": "Reorder a custom rule", "type": "object", "properties": { "action": { "type": "string", "enum": [ "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", "enum": [ "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", "enum": [ "crs.disable" ] }, "id": { "nullable": true }, "value": { "nullable": true } }, "required": [ "action" ], "additionalProperties": false }, { "description": "Add an IP Blocking rule", "type": "object", "properties": { "action": { "type": "string", "enum": [ "ip.insert" ] }, "id": { "nullable": true }, "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", "enum": [ "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", "enum": [ "ip.remove" ] }, "id": { "type": "string" }, "value": { "nullable": true } }, "required": [ "action", "id" ], "additionalProperties": false }, { "description": "Update a managed ruleset", "type": "object", "properties": { "action": { "type": "string", "enum": [ "managedRules.update" ] }, "id": { "type": "string", "enum": [ "ai_bots", "bot_filter", "bot_protection", "vercel_ruleset", "owasp" ] }, "value": { "type": "object", "properties": { "action": { "type": "string", "enum": [ "log", "challenge", "deny" ] }, "active": { "type": "boolean" } }, "required": [ "active" ], "additionalProperties": false } }, "required": [ "action", "id", "value" ], "additionalProperties": false }, { "description": "Update a managed rule group", "type": "object", "properties": { "action": { "type": "string" }, "id": { "type": "string", "enum": [ "ai_bots", "bot_filter", "bot_protection", "vercel_ruleset", "owasp" ] }, "value": { "type": "object", "additionalProperties": { "type": "object", "properties": { "active": { "type": "boolean" }, "action": { "type": "string", "enum": [ "log", "challenge", "deny" ] } }, "required": [ "active" ], "additionalProperties": false } } }, "required": [ "action", "id", "value" ], "additionalProperties": false }, { "description": "Toggle bot ID", "type": "object", "properties": { "action": { "type": "string" }, "id": { "type": "string" }, "value": { "type": "boolean" } }, "required": [ "action", "value" ], "additionalProperties": false }, { "description": "Update log headers configuration", "type": "object", "properties": { "action": { "type": "string" }, "id": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } }, { "type": "string" } ] } }, "required": [ "action", "value" ], "additionalProperties": false } ] } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateFirewallConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.security.updateFirewallConfig({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n action: \"ip.remove\",\n id: \"\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "updateFirewallConfig", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Security.UpdateFirewallConfig(ctx, \"\", nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/security/firewall/config/{configVersion}": { "get": { "description": "Retrieve 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": "If the firewall configuration includes a [custom managed ruleset](https://vercel.com/docs/security/vercel-waf/managed-rulesets), it will include a `crs` item that has the following values: sd: Scanner Detection ma: Multipart Attack lfi: Local File Inclusion Attack rfi: Remote File Inclusion Attack rce: Remote Execution Attack php: PHP Attack gen: Generic Attack xss: XSS Attack sqli: SQL Injection Attack sf: Session Fixation Attack java: Java Attack", "content": { "application/json": { "schema": { "properties": { "ownerId": { "type": "string" }, "projectKey": { "type": "string" }, "id": { "type": "string" }, "version": { "type": "number" }, "updatedAt": { "type": "string" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "crs": { "properties": { "sd": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Scanner Detection - Detect and prevent reconnaissance activities from network scanning tools." }, "ma": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Multipart Attack - Block attempts to bypass security controls using multipart/form-data encoding." }, "lfi": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Local File Inclusion Attack - Prevent unauthorized access to local files through web applications." }, "rfi": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Remote File Inclusion Attack - Prohibit unauthorized upload or execution of remote files." }, "rce": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Remote Execution Attack - Prevent unauthorized execution of remote scripts or commands." }, "php": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "PHP Attack - Safeguard against vulnerability exploits in PHP-based applications." }, "gen": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Generic Attack - Provide broad protection from various undefined or novel attack vectors." }, "xss": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "XSS Attack - Prevent injection of malicious scripts into trusted webpages." }, "sqli": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "SQL Injection Attack - Prohibit unauthorized use of SQL commands to manipulate databases." }, "sf": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Session Fixation Attack - Prevent unauthorized takeover of user sessions by enforcing unique session IDs." }, "java": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log" ] } }, "required": [ "action", "active" ], "type": "object", "description": "Java Attack - Mitigate risks of exploitation targeting Java-based applications or components." } }, "required": [ "gen", "java", "lfi", "ma", "php", "rce", "rfi", "sd", "sf", "sqli", "xss" ], "type": "object", "description": "Custom Ruleset" }, "rules": { "items": { "oneOf": [ { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "active": { "type": "boolean", "enum": [ false, true ] }, "conditionGroup": { "items": { "properties": { "conditions": { "items": { "properties": { "type": { "type": "string", "enum": [ "host", "path", "method", "header", "query", "cookie", "target_path", "route", "raw_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", "server_action", "bot_name", "bot_category", "bot_status", "bot_protection" ] }, "op": { "type": "string", "enum": [ "sub", "re", "eq", "ex", "inc", "pre", "suf", "gt", "gte", "lt", "lte", "nex", "ninc", "neq" ] }, "neg": { "type": "boolean", "enum": [ false, true ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "items": { "type": "string" }, "type": "array" } ] } }, "required": [ "op", "type" ], "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", null ] } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "redirect": { "nullable": true, "properties": { "location": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "location", "permanent" ], "type": "object" }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action" ], "type": "object" } }, "type": "object" }, "valid": { "type": "boolean", "enum": [ true ] }, "validationErrors": { "nullable": true } }, "required": [ "action", "active", "conditionGroup", "id", "name", "valid", "validationErrors" ], "type": "object" }, { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "active": { "type": "boolean", "enum": [ false, true ] }, "conditionGroup": { "items": { "properties": { "conditions": { "items": { "properties": { "type": { "type": "string", "enum": [ "host", "path", "method", "header", "query", "cookie", "target_path", "route", "raw_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", "server_action", "bot_name", "bot_category", "bot_status", "bot_protection" ] }, "op": { "type": "string", "enum": [ "sub", "re", "eq", "ex", "inc", "pre", "suf", "gt", "gte", "lt", "lte", "nex", "ninc", "neq" ] }, "neg": { "type": "boolean", "enum": [ false, true ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "items": { "type": "string" }, "type": "array" } ] } }, "required": [ "op", "type" ], "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", null ] } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "redirect": { "nullable": true, "properties": { "location": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "location", "permanent" ], "type": "object" }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action" ], "type": "object" } }, "type": "object" }, "valid": { "type": "boolean", "enum": [ false ] }, "validationErrors": { "items": { "type": "string" }, "type": "array" } }, "required": [ "action", "active", "conditionGroup", "id", "name", "valid", "validationErrors" ], "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": [ "action", "hostname", "id", "ip" ], "type": "object" }, "type": "array" }, "changes": { "items": { "type": "object" }, "type": "array" }, "managedRules": { "properties": { "bot_protection": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log", "challenge" ] }, "updatedAt": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log", "challenge" ] }, "updatedAt": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log", "challenge" ] }, "updatedAt": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "required": [ "active" ], "type": "object" }, "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "deny", "log", "challenge" ] }, "updatedAt": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "required": [ "active" ], "type": "object" } }, "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "changes", "crs", "firewallEnabled", "id", "ips", "ownerId", "projectKey", "rules", "updatedAt", "version" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } }, { "description": "The deployed configVersion for the firewall configuration", "in": "path", "name": "configVersion", "required": true, "schema": { "type": "string" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getFirewallConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.security.getFirewallConfig({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n configVersion: \"\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getFirewallConfig", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Security.GetFirewallConfig(ctx, \"\", \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/security/firewall/attack-status": { "get": { "description": "Retrieve active attack data within the last N days (default: 1 day)", "operationId": "getActiveAttackStatus", "security": [ { "bearerToken": [] } ], "summary": "Read active attack data", "tags": [ "security" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "anomalies": { "items": { "properties": { "projectId": { "type": "string" }, "ownerId": { "type": "string" }, "startTime": { "type": "number" }, "endTime": { "nullable": true, "type": "number" }, "atMinute": { "type": "number" }, "state": { "type": "string" }, "affectedHostMap": { "additionalProperties": { "properties": { "anomalyAlerts": { "additionalProperties": { "properties": { "at_minute": { "type": "string" }, "zscore": { "type": "number" }, "total_requests_minute": { "type": "number" }, "avg_requests": { "type": "number" }, "stddev_requests": { "type": "number" } }, "required": [ "at_minute", "avg_requests", "stddev_requests", "total_requests_minute", "zscore" ], "type": "object" }, "type": "object" }, "ddosAlerts": { "additionalProperties": { "properties": { "atMinute": { "type": "string" }, "totalReqs": { "type": "number" } }, "required": [ "atMinute", "totalReqs" ], "type": "object" }, "type": "object" } }, "type": "object" }, "type": "object" } }, "required": [ "affectedHostMap", "atMinute", "endTime", "ownerId", "projectId", "startTime" ], "type": "object" }, "type": "array" } }, "required": [ "anomalies" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "projectId", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "since", "in": "query", "required": false, "schema": { "type": "number", "minimum": 1 } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "getActiveAttackStatus", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.security.getActiveAttackStatus({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/security/firewall/bypass": { "get": { "description": "Retrieve the system bypass rules configured for the specified project", "operationId": "getBypassIp", "security": [ { "bearerToken": [] } ], "summary": "Read System Bypass", "tags": [ "security" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "result": { "items": { "properties": { "OwnerId": { "type": "string" }, "Id": { "type": "string" }, "Domain": { "type": "string" }, "Ip": { "type": "string" }, "Action": { "type": "string", "enum": [ "bypass", "block" ] }, "ProjectId": { "type": "string" }, "IsProjectRule": { "type": "boolean", "enum": [ false, true ] }, "Note": { "type": "string" }, "CreatedAt": { "type": "string" }, "ActorId": { "type": "string" }, "UpdatedAt": { "type": "string" }, "UpdatedAtHour": { "type": "string" }, "DeletedAt": { "type": "string" }, "ExpiresAt": { "nullable": true, "type": "number" } }, "required": [ "CreatedAt", "Domain", "Id", "Ip", "OwnerId", "UpdatedAt", "UpdatedAtHour" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "OwnerId": { "type": "string" }, "Id": { "type": "string" } }, "required": [ "Id", "OwnerId" ], "type": "object" } }, "required": [ "result" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "number", "example": 10, "maximum": 256 } }, { "name": "sourceIp", "description": "Filter by source IP", "in": "query", "required": false, "schema": { "description": "Filter by source IP", "type": "string", "maxLength": 49 } }, { "name": "domain", "description": "Filter by domain", "in": "query", "required": false, "schema": { "description": "Filter by domain", "type": "string", "pattern": "([a-z]+[a-z.]+)$", "maxLength": 2544 } }, { "name": "projectScope", "description": "Filter by project scoped rules", "in": "query", "required": false, "schema": { "description": "Filter by project scoped rules", "type": "boolean" } }, { "name": "offset", "description": "Used for pagination. Retrieves results after the provided id", "in": "query", "required": false, "schema": { "description": "Used for pagination. Retrieves results after the provided id", "type": "string", "maxLength": 2560 } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getBypassIp", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.security.getBypassIp({\n projectId: \"\",\n limit: 10,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Create new system bypass rules", "operationId": "addBypassIp", "security": [ { "bearerToken": [] } ], "summary": "Create System Bypass Rule", "tags": [ "security" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "ok": { "type": "boolean", "enum": [ false, true ] }, "result": { "items": { "properties": { "OwnerId": { "type": "string" }, "Id": { "type": "string" }, "Domain": { "type": "string" }, "Ip": { "type": "string" }, "ProjectId": { "type": "string" }, "Note": { "type": "string" }, "IsProjectRule": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "Domain", "Id", "IsProjectRule", "Note", "OwnerId", "ProjectId" ], "type": "object" }, "type": "array" }, "pagination": { "nullable": true } }, "required": [ "ok", "pagination", "result" ], "type": "object" }, { "properties": { "ok": { "type": "boolean", "enum": [ false, true ] }, "result": { "items": { "properties": { "OwnerId": { "type": "string" }, "Id": { "type": "string" }, "Domain": { "type": "string" }, "Ip": { "type": "string" }, "Action": { "type": "string", "enum": [ "bypass", "block" ] }, "ProjectId": { "type": "string" }, "IsProjectRule": { "type": "boolean", "enum": [ false, true ] }, "Note": { "type": "string" }, "CreatedAt": { "type": "string" }, "ActorId": { "type": "string" }, "UpdatedAt": { "type": "string" }, "UpdatedAtHour": { "type": "string" }, "DeletedAt": { "type": "string" }, "ExpiresAt": { "nullable": true, "type": "number" } }, "required": [ "CreatedAt", "Domain", "Id", "Ip", "OwnerId", "UpdatedAt", "UpdatedAtHour" ], "type": "object" }, "type": "array" } }, "required": [ "ok" ], "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "oneOf": [ { "required": [ "domain" ] }, { "required": [ "projectScope" ] } ], "properties": { "domain": { "type": "string", "pattern": "([a-z]+[a-z.]+)$", "maxLength": 2544 }, "projectScope": { "type": "boolean", "description": "If the specified bypass will apply to all domains for a project." }, "sourceIp": { "type": "string" }, "allSources": { "type": "boolean" }, "ttl": { "type": "number", "description": "Time to live in milliseconds" }, "note": { "type": "string", "maxLength": 500 } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "addBypassIp", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.security.addBypassIp({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Remove system bypass rules", "operationId": "removeBypassIp", "security": [ { "bearerToken": [] } ], "summary": "Remove System Bypass Rule", "tags": [ "security" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "ok": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "ok" ], "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "oneOf": [ { "required": [ "domain" ] }, { "required": [ "projectScope" ] } ], "properties": { "domain": { "type": "string", "pattern": "([a-z]+[a-z.]+)$", "maxLength": 2544 }, "projectScope": { "type": "boolean" }, "sourceIp": { "type": "string" }, "allSources": { "type": "boolean" }, "note": { "type": "string", "maxLength": 500 } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "removeBypassIp", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.security.removeBypassIp({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/security/firewall/events": { "get": { "description": "Retrieve firewall actions for a project", "operationId": "getSecurityFirewallEvents", "security": [], "summary": "Read Firewall Actions by Project", "tags": [ "security" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "actions": { "items": { "properties": { "startTime": { "type": "string" }, "endTime": { "type": "string" }, "isActive": { "type": "boolean", "enum": [ false, true ] }, "action_type": { "type": "string" }, "host": { "type": "string" }, "public_ip": { "type": "string" }, "count": { "type": "number" } }, "required": [ "action_type", "count", "endTime", "host", "isActive", "public_ip", "startTime" ], "type": "object" }, "type": "array" } }, "required": [ "actions" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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" } }, { "name": "startTimestamp", "in": "query", "required": false, "schema": { "type": "number" } }, { "name": "endTimestamp", "in": "query", "required": false, "schema": { "type": "number" } }, { "name": "hosts", "in": "query", "required": false, "schema": { "type": "string" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getSecurityFirewallEvents", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n const result = await vercel.security.getSecurityFirewallEvents({\n projectId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/storage/stores/integration/direct": { "post": { "description": "Creates an integration store with automatic billing plan handling. For free resources, omit `billingPlanId` to auto-discover free plans. For paid resources, provide a `billingPlanId` from the billing plans endpoint.", "operationId": "createIntegrationStoreDirect", "security": [ { "bearerToken": [] } ], "summary": "Create integration store (free and paid plans)", "tags": [ "integrations" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "store": { "nullable": true, "type": "object", "properties": { "projectsMetadata": { "items": { "properties": { "id": { "type": "string" }, "projectId": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string", "enum": [ "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "services", "mastra", null ] }, "latestDeployment": { "type": "string" }, "environments": { "items": { "type": "string", "enum": [ "production", "preview", "development" ] }, "type": "array" }, "envVarPrefix": { "nullable": true, "type": "string" }, "environmentVariables": { "items": { "type": "string" }, "type": "array" }, "deployments": { "properties": { "required": { "type": "boolean", "enum": [ false, true ] }, "actions": { "items": { "properties": { "slug": { "type": "string" }, "environments": { "items": { "type": "string", "enum": [ "production", "preview", "development" ] }, "type": "array" } }, "required": [ "environments", "slug" ], "type": "object" }, "type": "array" } }, "required": [ "actions", "required" ], "type": "object" } }, "required": [ "envVarPrefix", "environmentVariables", "environments", "id", "name", "projectId" ], "type": "object" }, "type": "array" }, "projectFilter": { "properties": { "git": { "properties": { "providers": { "oneOf": [ { "items": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "owners": { "items": { "type": "string" }, "type": "array" }, "repos": { "items": { "type": "string" }, "type": "array" } }, "required": [ "providers" ], "type": "object" } }, "type": "object" }, "totalConnectedProjects": { "type": "number" }, "usageQuotaExceeded": { "type": "boolean", "enum": [ false, true ] }, "status": { "nullable": true, "type": "string", "enum": [ "available", "error", "suspended", "limits-exceeded-suspended", "limits-exceeded-suspended-store-count", "initializing", "onboarding", "uninstalled", null ] }, "ownership": { "type": "string", "enum": [ "owned", "linked", "sandbox" ] }, "capabilities": { "properties": { "mcp": { "type": "boolean", "enum": [ false, true ] }, "mcpReadonly": { "type": "boolean", "enum": [ false, true ] }, "sso": { "type": "boolean", "enum": [ false, true ] }, "billable": { "type": "boolean", "enum": [ false, true ] }, "transferable": { "type": "boolean", "enum": [ false, true ] }, "secretsSync": { "type": "boolean", "enum": [ false, true ] }, "secretRotation": { "oneOf": [ { "properties": { "maxDelayHours": { "type": "number" } }, "required": [ "maxDelayHours" ], "type": "object" }, { "type": "boolean", "enum": [ false ] } ] }, "projects": { "type": "boolean", "enum": [ false, true ] }, "v0": { "type": "boolean", "enum": [ false, true ] }, "autoSensitive": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "metadata": { "additionalProperties": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "items": { "type": "string" }, "type": "array" }, { "items": { "type": "number" }, "type": "array" }, { "type": "boolean", "enum": [ false, true ] } ] }, "type": "object" }, "externalResourceId": { "type": "string" }, "externalResourceStatus": { "nullable": true, "type": "string", "enum": [ "error", "suspended", "onboarding", "uninstalled", "ready", "pending", "resumed", null ] }, "directPartnerConsoleUrl": { "type": "string" }, "product": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "iconUrl": { "type": "string" }, "capabilities": { "properties": { "mcp": { "type": "boolean", "enum": [ false, true ] }, "mcpReadonly": { "type": "boolean", "enum": [ false, true ] }, "sso": { "type": "boolean", "enum": [ false, true ] }, "billable": { "type": "boolean", "enum": [ false, true ] }, "transferable": { "type": "boolean", "enum": [ false, true ] }, "secretsSync": { "type": "boolean", "enum": [ false, true ] }, "secretRotation": { "oneOf": [ { "properties": { "maxDelayHours": { "type": "number" } }, "required": [ "maxDelayHours" ], "type": "object" }, { "type": "boolean", "enum": [ false ] } ] }, "sandbox": { "type": "boolean", "enum": [ false, true ] }, "linking": { "type": "boolean", "enum": [ false, true ] }, "projects": { "type": "boolean", "enum": [ false, true ] }, "v0": { "type": "boolean", "enum": [ false, true ] }, "importResource": { "type": "boolean", "enum": [ false, true ] }, "connectedImportResource": { "type": "boolean", "enum": [ false, true ] }, "nativeImportResource": { "type": "boolean", "enum": [ false, true ] }, "databaseUI": { "type": "boolean", "enum": [ false, true ] }, "v0Flavors": { "type": "boolean", "enum": [ false, true ] }, "autoSensitive": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "shortDescription": { "type": "string" }, "metadataSchema": { "properties": { "type": { "type": "string", "enum": [ "object" ] }, "properties": { "additionalProperties": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "input" ] }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "description": { "type": "string" }, "default": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "number" ] }, "ui:control": { "type": "string", "enum": [ "input" ] }, "maximum": { "type": "number" }, "exclusiveMaximum": { "type": "number" }, "minimum": { "type": "number" }, "exclusiveMinimum": { "type": "number" }, "description": { "type": "string" }, "default": { "type": "number" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "boolean" ] }, "ui:control": { "type": "string", "enum": [ "toggle" ] }, "description": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "array" ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "number" ] }, "description": { "type": "string" }, "minimum": { "type": "number" }, "exclusiveMinimum": { "type": "number" }, "maximum": { "type": "number" }, "exclusiveMaximum": { "type": "number" }, "default": { "type": "number" } }, "required": [ "type" ], "type": "object" }, "ui:control": { "type": "string", "enum": [ "slider" ] }, "ui:steps": { "items": { "type": "number" }, "type": "array" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "description": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "default": { "items": { "type": "number" }, "type": "array" } }, "required": [ "items", "type", "ui:control", "ui:steps" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "select" ] }, "ui:options": { "items": { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "description": { "type": "string" }, "default": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "radio-button" ] }, "ui:options": { "items": { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "description": { "type": "string" }, "default": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "array" ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "description": { "type": "string" }, "minLength": { "type": "number" }, "maxLength": { "type": "number" }, "pattern": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object" }, "ui:control": { "type": "string", "enum": [ "multi-select" ] }, "ui:options": { "items": { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "description": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "default": { "items": { "type": "string" }, "type": "array" }, "example": { "items": { "type": "string" }, "type": "array" } }, "required": [ "items", "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "vercel-region" ] }, "ui:options": { "items": { "oneOf": [ { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, { "type": "string" }, { "properties": { "value": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "description": { "type": "string" }, "default": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "array" ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "description": { "type": "string" }, "minLength": { "type": "number" }, "maxLength": { "type": "number" }, "pattern": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" } }, "required": [ "type" ], "type": "object" }, "ui:control": { "type": "string", "enum": [ "multi-vercel-region" ] }, "ui:options": { "items": { "oneOf": [ { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, { "type": "string" }, { "properties": { "value": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "description": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "default": { "items": { "type": "string" }, "type": "array" }, "example": { "items": { "type": "string" }, "type": "array" } }, "required": [ "items", "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "domain" ] }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "description": { "type": "string" }, "default": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "git-namespace" ] }, "description": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "update", "create" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "git:providers": { "items": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ] }, "type": "array" } }, "required": [ "type", "ui:control" ], "type": "object" } ] }, "type": "object" }, "required": { "items": { "type": "string" }, "type": "array" }, "ui:order": { "items": { "type": "string" }, "type": "array" } }, "required": [ "properties", "type" ], "type": "object" }, "resourceLinks": { "items": { "properties": { "href": { "type": "string" }, "title": { "type": "string" } }, "required": [ "href", "title" ], "type": "object" }, "type": "array" }, "tags": { "items": { "type": "string", "enum": [ "edge-config", "redis", "postgres", "blob", "experimentation", "checks", "storage", "ai", "observability", "video", "authentication", "workflow", "logDrain", "traceDrain", "messaging", "other", "mysql", "kv", "vector", "libsql", "sqlite", "rds", "drains", "mcp", "tag_agents", "tag_ai", "tag_analytics", "tag_authentication", "tag_cms", "tag_code_repository", "tag_code_review", "tag_code_security", "tag_code_testing", "tag_commerce", "tag_databases", "tag_dev_tools", "tag_experimentation", "tag_flags", "tag_logging", "tag_messaging", "tag_monitoring", "tag_observability", "tag_payments", "tag_performance", "tag_productivity", "tag_searching", "tag_security", "tag_support_agent", "tag_testing", "tag_video", "tag_web_automation", "tag_workflow", "tag_checks", "tag_storage", "tag_logDrain", "tag_traceDrain", "tag_other" ] }, "type": "array" }, "projectConnectionScopes": { "items": { "type": "string", "enum": [ "read:deployment", "read:domain", "read:project", "read-write:deployment", "read-write:deployment-check", "read-write:domain", "read-write:global-project-env-vars", "read-write:integration-deployment-action", "read-write:log-drain", "read-write:drains", "read-write:project-env-vars", "read-write:project-protection-bypass" ] }, "type": "array" }, "showSSOLinkOnProjectConnection": { "type": "boolean", "enum": [ false, true ] }, "disableResourceRenaming": { "type": "boolean", "enum": [ false, true ] }, "resourceTitle": { "type": "string", "description": "Custom resource title to display during installation and configuration. If not provided, defaults to protocol-based defaults.", "example": "Instance" }, "agentSkillUrl": { "type": "string", "description": "URL to a skill/guide for how AI agents should use this product. Providers can specify this to help agents understand how to interact with their integration." }, "repl": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "supportsReadOnlyMode": { "type": "boolean", "enum": [ false, true ] }, "welcomeMessage": { "type": "string" } }, "required": [ "enabled", "supportsReadOnlyMode" ], "type": "object" }, "guides": { "items": { "properties": { "framework": { "type": "string" }, "title": { "type": "string" }, "steps": { "items": { "properties": { "title": { "type": "string" }, "content": { "type": "string" }, "actions": { "items": { "properties": { "type": { "type": "string", "enum": [ "connect_to_project", "configure_project_connections", "add_drain" ] } }, "required": [ "type" ], "type": "object" }, "type": "array" } }, "required": [ "content", "title" ], "type": "object" }, "type": "array" } }, "required": [ "framework", "steps", "title" ], "type": "object" }, "type": "array" }, "integration": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "supportsInstallationBillingPlans": { "type": "boolean", "enum": [ false, true ] }, "icon": { "type": "string" }, "flags": { "items": { "type": "string" }, "type": "array" } }, "required": [ "icon", "id", "name", "slug" ], "type": "object" }, "integrationConfigurationId": { "type": "string" }, "supportedProtocols": { "items": { "type": "string", "enum": [ "experimentation", "checks", "storage", "ai", "observability", "video", "authentication", "workflow", "logDrain", "traceDrain", "messaging", "other" ] }, "type": "array" }, "primaryProtocol": { "type": "string", "enum": [ "experimentation", "checks", "storage", "ai", "observability", "video", "authentication", "workflow", "logDrain", "traceDrain", "messaging", "other" ] }, "logDrainStatus": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "integration", "integrationConfigurationId", "supportedProtocols" ], "type": "object" }, "protocolSettings": { "properties": { "experimentation": { "properties": { "edgeConfigSyncingEnabled": { "type": "boolean", "enum": [ false, true ] }, "edgeConfigId": { "type": "string" }, "edgeConfigTokenId": { "type": "string" } }, "type": "object" } }, "type": "object" }, "notification": { "properties": { "title": { "type": "string" }, "level": { "type": "string", "enum": [ "error", "info", "warn" ] }, "message": { "type": "string" }, "href": { "type": "string" } }, "required": [ "level", "title" ], "type": "object" }, "secrets": { "items": { "properties": { "name": { "type": "string" }, "length": { "type": "number" }, "frameworkPublishable": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "length", "name" ], "type": "object" }, "type": "array" }, "billingPlan": { "properties": { "type": { "type": "string", "enum": [ "prepayment", "subscription" ] }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "scope": { "type": "string", "enum": [ "installation", "resource" ] }, "paymentMethodRequired": { "type": "boolean", "enum": [ false, true ] }, "preauthorizationAmount": { "type": "number" }, "initialCharge": { "type": "string" }, "minimumAmount": { "type": "string" }, "maximumAmount": { "type": "string" }, "maximumAmountAutoPurchasePerPeriod": { "type": "string" }, "cost": { "type": "string" }, "details": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "type": "object" }, "type": "array" }, "highlightedDetails": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "type": "object" }, "type": "array" }, "quote": { "items": { "properties": { "line": { "type": "string" }, "amount": { "type": "string" } }, "required": [ "amount", "line" ], "type": "object" }, "type": "array" }, "effectiveDate": { "type": "string" }, "disabled": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "description", "id", "name", "paymentMethodRequired", "scope", "type" ], "type": "object" }, "secretRotationRequestedAt": { "type": "number", "description": "The timestamp when secret rotation was requested." }, "secretRotationRequestedReason": { "type": "string", "description": "The reason for the secret rotation request." }, "secretRotationRequestedBy": { "type": "string", "description": "The ID of the user/team who requested the secret rotation." }, "secretRotationCompletedAt": { "type": "number", "description": "The timestamp when secret rotation was completed." }, "parentId": { "type": "string", "description": "The ID of the parent resource. Used to establish a parent-child relationship between resources, such as sandbox resources linking to their owner account resource." }, "targets": { "items": { "type": "string", "enum": [ "production", "preview", "development" ], "description": "The deployment targets that this resource is available for." }, "type": "array", "description": "The deployment targets that this resource is available for." } }, "required": [ "externalResourceId", "product", "projectsMetadata", "secrets", "status", "usageQuotaExceeded" ] } }, "required": [ "store" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "" }, "429": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "name", "integrationConfigurationId", "integrationProductIdOrSlug" ], "properties": { "name": { "type": "string", "maxLength": 128, "description": "Human-readable name for the storage resource", "example": "my-dev-database" }, "integrationConfigurationId": { "type": "string", "description": "ID of your integration configuration. Get this from GET /v1/integrations/configurations", "example": "icfg_cuwj0AdCdH3BwWT4LPijCC7t", "pattern": "^icfg_[a-zA-Z0-9]+$" }, "integrationProductIdOrSlug": { "type": "string", "description": "ID or slug of the integration product. Get available products from GET /v1/integrations/configuration/{id}/products", "example": "iap_postgres_db", "oneOf": [ { "pattern": "^iap_[a-zA-Z0-9_]+$", "description": "Product ID format" }, { "pattern": "^[a-z0-9-]+$", "description": "Product slug format" } ] }, "metadata": { "type": "object", "description": "Optional key-value pairs for resource metadata", "additionalProperties": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "array", "items": { "type": "string" } }, { "type": "array", "items": { "type": "number" } } ] }, "example": { "environment": "development", "project": "my-app", "tags": [ "database", "postgres" ] } }, "externalId": { "type": "string", "description": "Optional external identifier for tracking purposes", "example": "dev-db-001" }, "protocolSettings": { "type": "object", "description": "Protocol-specific configuration settings", "additionalProperties": true, "example": { "experimentation": { "edgeConfigSyncingEnabled": true } } }, "source": { "type": "string", "enum": [ "marketplace", "deploy-button", "external", "v0", "resource-claims", "cli", "oauth", "backoffice" ], "description": "Source of the store creation request", "example": "marketplace", "default": "marketplace" }, "billingPlanId": { "type": "string", "description": "ID of the billing plan for paid resources. Get available plans from GET /integrations/integration/{id}/products/{productId}/plans. If not provided, automatically discovers free billing plans.", "example": "bp_abc123def456" }, "paymentMethodId": { "type": "string", "description": "Payment method ID for paid resources. Optional - uses default payment method if not provided.", "example": "pm_1AbcDefGhiJklMno" }, "prepaymentAmountCents": { "type": "number", "minimum": 50, "description": "Amount in cents for prepayment billing plans. Required only for prepayment plans with variable amounts.", "example": 5000 } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createIntegrationStoreDirect", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.integrations.createIntegrationStoreDirect({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"my-dev-database\",\n integrationConfigurationId: \"icfg_cuwj0AdCdH3BwWT4LPijCC7t\",\n integrationProductIdOrSlug: \"iap_postgres_db\",\n metadata: {\n \"environment\": \"development\",\n \"project\": \"my-app\",\n \"tags\": [\n \"database\",\n \"postgres\",\n ],\n },\n externalId: \"dev-db-001\",\n protocolSettings: {\n \"experimentation\": {\n \"edgeConfigSyncingEnabled\": true,\n },\n },\n billingPlanId: \"bp_abc123def456\",\n paymentMethodId: \"pm_1AbcDefGhiJklMno\",\n prepaymentAmountCents: 5000,\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v3/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", "enum": [ false, true ], "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", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "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", "import", "mail", "github", "gitlab", "bitbucket", "saml", "dsync", "feedback", "organization-teams", "nsnb-auto-approve", "nsnb-hobby-upgrade", "nsnb-request-access", "nsnb-viewer-upgrade", "nsnb-invite", "nsnb-redeploy", "nsnb-redeploy-attribution-card" ] }, "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", "PROJECT_GUEST" ] } }, "required": [ "id", "name" ], "type": "object", "description": "Array of project memberships" }, "type": "array", "description": "Array of project memberships" }, "isEnterpriseManaged": { "type": "boolean", "enum": [ false, true ], "description": "Indicates whether the user is managed by an enterprise." } }, "required": [ "confirmed", "createdAt", "email", "role", "uid", "username" ], "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", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "teamRoles": { "items": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "type": "array" }, "teamPermissions": { "items": { "type": "string", "enum": [ "IntegrationManager", "CreateProject", "FullProductionDeployment", "UsageViewer", "EnvVariableManager", "EnvironmentManager", "V0Builder", "V0Chatter", "V0Viewer" ] }, "type": "array" }, "isDSyncUser": { "type": "boolean", "enum": [ false, true ] }, "createdAt": { "type": "number" }, "expired": { "type": "boolean", "enum": [ true ] }, "projects": { "additionalProperties": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ] }, "type": "object" }, "entitlements": { "items": { "type": "string" }, "type": "array" } }, "required": [ "id", "isDSyncUser" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "hasNext": { "type": "boolean", "enum": [ false, true ] }, "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", "hasNext", "next", "prev" ], "type": "object" } }, "required": [ "members", "pagination" ], "type": "object", "x-vercel-cli": { "displayColumns": { "username": "members[].username", "email": "members[].email", "role": "members[].role", "joinedFrom": "members[].joinedFrom.origin", "createdAt": "members[].createdAt" } } } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "members" ] }, "parameters": [ { "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", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "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" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "path", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": true, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "getTeamMembers", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.getTeamMembers({\n limit: 20,\n since: 1540095775951,\n until: 1540095775951,\n role: \"OWNER\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/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 to be invited must be specified by email.", "operationId": "inviteUserToTeam", "security": [ { "bearerToken": [] } ], "summary": "Invite a user", "tags": [ "teams" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvitedTeamMember" } } } }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource.\nThe authenticated user must be a team owner to perform the action" }, "503": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "invite" ] }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "path", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": true, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "required": [ "email" ], "properties": { "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", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ], "default": "VIEWER", "description": "The role of the user to invite", "example": "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", "PROJECT_GUEST" ], "example": "ADMIN", "description": "Sets the project roles for the invited user" } } } } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "inviteUserToTeam", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.inviteUserToTeam({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: [\n {\n email: \"john@example.com\",\n role: \"DEVELOPER\",\n projects: [\n {\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n role: \"ADMIN\",\n },\n {\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n role: \"ADMIN\",\n },\n ],\n },\n ],\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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", "enum": [ false, true ] }, "joinedFrom": { "properties": { "origin": { "type": "string", "enum": [ "teams", "link", "import", "mail", "github", "gitlab", "bitbucket", "saml", "dsync", "feedback", "organization-teams", "nsnb-auto-approve", "nsnb-hobby-upgrade", "nsnb-request-access", "nsnb-viewer-upgrade", "nsnb-invite", "nsnb-redeploy", "nsnb-redeploy-attribution-card" ] }, "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": [ "bitbucket", "github", "gitlab", "teamName", "teamSlug" ], "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." }, "429": { "description": "" }, "503": { "description": "" } }, "parameters": [ { "name": "teamId", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique team identifier", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } } ], "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" } } } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "requestAccessToTeam", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.requestAccessToTeam({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n joinedFrom: {\n origin: \"github\",\n commitId: \"f498d25d8bd654b578716203be73084b31130cd7\",\n repoId: \"67753070\",\n repoPath: \"jane-doe/example\",\n gitUserId: 103053343,\n gitUserLogin: \"jane-doe\",\n },\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "requestAccessToTeam", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Teams.RequestAccessToTeam(ctx, \"\", &operations.RequestAccessToTeamRequestBody{\n JoinedFrom: operations.JoinedFrom{\n Origin: operations.OriginGithub,\n CommitID: vercel.String(\"f498d25d8bd654b578716203be73084b31130cd7\"),\n RepoID: vercel.String(\"67753070\"),\n RepoPath: vercel.String(\"jane-doe/example\"),\n GitUserID: vercel.Pointer(operations.CreateGitUserIDNumber(\n 103053343,\n )),\n GitUserLogin: vercel.String(\"jane-doe\"),\n },\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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", "enum": [ false, true ], "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": [ "teams", "link", "import", "mail", "github", "gitlab", "bitbucket", "saml", "dsync", "feedback", "organization-teams", "nsnb-auto-approve", "nsnb-hobby-upgrade", "nsnb-request-access", "nsnb-viewer-upgrade", "nsnb-invite", "nsnb-redeploy", "nsnb-redeploy-attribution-card" ] }, "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": [ "accessRequestedAt", "bitbucket", "confirmed", "github", "gitlab", "joinedFrom", "teamName", "teamSlug" ], "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": [ { "name": "userId", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique user identifier" } }, { "name": "teamId", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique team identifier", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getTeamAccessRequest", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.getTeamAccessRequest({\n userId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getTeamAccessRequest", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Teams.GetTeamAccessRequest(ctx, \"\", \"\")\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": [ "from", "name", "slug", "teamId" ], "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": "" }, "503": { "description": "" } }, "parameters": [ { "name": "teamId", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique team identifier", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "inviteCode": { "type": "string", "description": "The invite code to join the team.", "example": "fisdh38aejkeivn34nslfore9vjtn4ls" } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "joinTeam", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.joinTeam({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n inviteCode: \"fisdh38aejkeivn34nslfore9vjtn4ls\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "joinTeam", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Teams.JoinTeam(ctx, \"\", &operations.JoinTeamRequestBody{\n InviteCode: vercel.String(\"fisdh38aejkeivn34nslfore9vjtn4ls\"),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized.\nTeam 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." }, "409": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "uid", "description": "The ID of the member.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the member.", "example": "ndfasllgPyCtREAqxxdyFKb" } }, { "name": "teamId", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique team identifier", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } } ], "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.", "example": "VIEWER", "default": "MEMBER" }, "teamPermissions": { "type": "array", "description": "The team permissions to set for the member. Permissions must be compatible with the team roles assigned to the member.", "example": [ "CreateProject", "FullProductionDeployment" ], "items": { "type": "string", "enum": [ "IntegrationManager", "CreateProject", "FullProductionDeployment", "UsageViewer", "EnvVariableManager", "EnvironmentManager", "V0Builder", "V0Chatter", "V0Viewer" ] } }, "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", "example": "ADMIN", "description": "The project role of the member that will be added. \\\"null\\\" will remove this project level role.", "nullable": true, "enum": [ "ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER", null ] } } } }, "joinedFrom": { "additionalProperties": false, "type": "object", "properties": { "ssoUserId": { "nullable": true } } } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateTeamMember", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.updateTeamMember({\n uid: \"ndfasllgPyCtREAqxxdyFKb\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n role: \"VIEWER\",\n teamPermissions: [\n \"CreateProject\",\n \"FullProductionDeployment\",\n ],\n projects: [\n {\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n role: \"ADMIN\",\n },\n {\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n role: \"ADMIN\",\n },\n {\n projectId: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n role: \"ADMIN\",\n },\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "updateTeamMember", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Teams.UpdateTeamMember(ctx, \"ndfasllgPyCtREAqxxdyFKb\", \"\", &operations.UpdateTeamMemberRequestBody{\n Confirmed: vercel.Bool(true),\n Role: vercel.String(\"[\\\"MEMBER\\\",\\\"VIEWER\\\"]\"),\n Projects: []operations.UpdateTeamMemberProjects{\n operations.UpdateTeamMemberProjects{\n ProjectID: \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n Role: operations.UpdateTeamMemberRoleAdmin.ToPointer(),\n },\n },\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource.\nNot authorized to update the team." }, "404": { "description": "" }, "503": { "description": "" } }, "parameters": [ { "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" } }, { "name": "teamId", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique team identifier", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "removeTeamMember", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.removeTeamMember({\n uid: \"ndlgr43fadlPyCtREAqxxdyFK\",\n newDefaultTeamId: \"team_nllPyCtREAqxxdyFKbbMDlxd\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "removeTeamMember", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Teams.RemoveTeamMember(ctx, \"ndlgr43fadlPyCtREAqxxdyFK\", \"\", vercel.String(\"team_nllPyCtREAqxxdyFKbbMDlxd\"))\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource.\nNot authorized to access the team." }, "404": { "description": "Team was not found." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "get" ] }, "parameters": [ { "name": "slug", "in": "query", "schema": { "type": "string", "example": "my-team-url-slug" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "path", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": true, "x-vercel-cli": { "kind": "argument" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getTeam", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.getTeam({\n slug: \"my-team-url-slug\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getTeam", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Teams.GetTeam(ctx, \"\", nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Team != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource.\nNot authorized to update the team. Must be an OWNER." }, "428": { "description": "Owner does not have protection add-on\nAdvanced Deployment Protection is not available for the user plan" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "update" ] }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "path", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": true, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "avatar": { "type": "string", "format": "regex", "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", "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", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "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." }, "hideIpAddressesInLogDrains": { "type": "boolean", "example": false, "description": "Display or hide IP addresses in Log Drains." }, "requireVerifiedCommits": { "type": "boolean", "example": true, "description": "When enabled, all projects in the team require commits to be signed and verified by the git provider before deployments will be created." }, "defaultDeploymentProtection": { "type": "object", "description": "Default deployment protection settings for new projects.", "additionalProperties": false, "properties": { "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", "all_except_custom_domains" ], "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", "all_except_custom_domains" ], "type": "string" } }, "required": [ "deploymentType" ], "type": "object", "nullable": true } } }, "defaultExpirationSettings": { "properties": { "expiration": { "description": "The time period to keep non-production deployments for", "example": "1y", "type": "string", "enum": [ "3y", "2y", "1y", "6m", "3m", "2m", "1m", "2w", "1w", "1d", "unlimited" ] }, "expirationProduction": { "description": "The time period to keep production deployments for", "example": "1y", "type": "string", "enum": [ "3y", "2y", "1y", "6m", "3m", "2m", "1m", "2w", "1w", "1d", "unlimited" ] }, "expirationCanceled": { "description": "The time period to keep canceled deployments for", "example": "1y", "type": "string", "enum": [ "1y", "6m", "3m", "2m", "1m", "2w", "1w", "1d", "unlimited" ] }, "expirationErrored": { "description": "The time period to keep errored deployments for", "example": "1y", "type": "string", "enum": [ "1y", "6m", "3m", "2m", "1m", "2w", "1w", "1d", "unlimited" ] } }, "type": "object", "additionalProperties": false }, "strictDeploymentProtectionSettings": { "type": "object", "description": "When enabled, deployment protection settings require stricter permissions (owner-only).", "additionalProperties": false, "properties": { "enabled": { "type": "boolean", "example": true, "description": "Enable or disable strict deployment protection settings." } }, "required": [ "enabled" ] }, "strictShareableLinks": { "type": "object", "description": "When enabled, creating shareable links requires Owner role.", "additionalProperties": false, "properties": { "enabled": { "type": "boolean", "example": true, "description": "Enable or disable requiring Owner role to create shareable links." } }, "required": [ "enabled" ] }, "nsnbConfig": { "anyOf": [ { "type": "object", "description": "NSNB configuration for the team.", "additionalProperties": false, "properties": { "preference": { "type": "string", "enum": [ "auto-approval", "manual-approval", "block" ], "description": "The NSNB preference for the team." } }, "required": [ "preference" ] }, { "type": "string" } ] }, "defaultProjectJobs": { "oneOf": [ { "description": "Default job configuration applied to new projects created in this team.", "type": "object", "additionalProperties": false, "properties": { "lint": { "type": "object", "additionalProperties": false, "properties": { "targets": { "type": "array", "items": { "type": "string" } } }, "required": [ "targets" ] }, "typecheck": { "type": "object", "additionalProperties": false, "properties": { "targets": { "type": "array", "items": { "type": "string" } } }, "required": [ "targets" ] } } }, { "type": "string" } ] }, "resourceConfig": { "type": "object", "description": "Resource configuration for the team.", "additionalProperties": false, "properties": { "buildMachine": { "type": "object", "description": "Build machine configuration.", "additionalProperties": false, "properties": { "default": { "type": "string", "enum": [ "enhanced", "turbo", "standard", "elastic" ], "example": "standard", "description": "Default build machine type for new builds: standard, enhanced, turbo, or elastic." } } } } } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "patchTeam", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.patchTeam({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n description: \"Our mission is to make cloud computing accessible to everyone\",\n emailDomain: \"example.com\",\n name: \"My Team\",\n previewDeploymentSuffix: \"example.dev\",\n regenerateInviteCode: true,\n saml: {\n enforced: true,\n },\n slug: \"my-team\",\n enablePreviewFeedback: \"on\",\n enableProductionFeedback: \"on\",\n sensitiveEnvironmentVariablePolicy: \"on\",\n remoteCaching: {\n enabled: true,\n },\n hideIpAddresses: false,\n hideIpAddressesInLogDrains: false,\n requireVerifiedCommits: true,\n defaultExpirationSettings: {\n expiration: \"1y\",\n expirationProduction: \"1y\",\n expirationCanceled: \"1y\",\n expirationErrored: \"1y\",\n },\n strictDeploymentProtectionSettings: {\n enabled: true,\n },\n strictShareableLinks: {\n enabled: true,\n },\n resourceConfig: {\n buildMachine: {\n default: \"standard\",\n },\n },\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "patchTeam", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Teams.PatchTeam(ctx, \"\", nil, &operations.PatchTeamRequestBody{\n Description: vercel.String(\"Our mission is to make cloud computing accessible to everyone\"),\n EmailDomain: vercel.String(\"example.com\"),\n Name: vercel.String(\"My Team\"),\n PreviewDeploymentSuffix: vercel.String(\"example.dev\"),\n RegenerateInviteCode: vercel.Bool(true),\n Saml: &operations.Saml{\n Enforced: vercel.Bool(true),\n },\n Slug: vercel.String(\"my-team\"),\n EnablePreviewFeedback: vercel.String(\"on\"),\n EnableProductionFeedback: vercel.String(\"on\"),\n SensitiveEnvironmentVariablePolicy: vercel.String(\"on\"),\n RemoteCaching: &operations.RemoteCaching{\n Enabled: vercel.Bool(true),\n },\n HideIPAddresses: vercel.Bool(false),\n HideIPAddressesInLogDrains: vercel.Bool(false),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Team != nil {\n // handle response\n }\n}" } ] } }, "/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": [ "pagination", "teams" ], "type": "object", "description": "A paginated list of teams.", "x-vercel-cli": { "displayColumns": { "name": "teams[].name", "id": "teams[].id", "slug": "teams[].slug", "role": "teams[].membership.role", "createdAt": "teams[].createdAt" } } } } } }, "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." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "list" ] }, "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" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getTeams", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.getTeams({\n limit: 20,\n since: 1540095775951,\n until: 1540095775951,\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getTeams", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Teams.GetTeams(ctx, vercel.Float64(20), vercel.Float64(1540095775951), vercel.Float64(1540095775951))\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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" } }, "required": [ "id", "slug" ], "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." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "create" ] }, "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" } } } } } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "createTeam", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.createTeam({\n slug: \"a-random-team\",\n name: \"A Random Team\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "createTeam", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Teams.CreateTeam(ctx, &operations.CreateTeamRequestBody{\n Slug: \"a-random-team\",\n Name: vercel.String(\"A Random Team\"),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/teams/{teamId}/dsync-roles": { "post": { "description": "Update the Directory Sync role mappings for a Team. This endpoint allows updating the mapping between directory groups and team roles or access groups.", "operationId": "postTeamDsyncRoles", "security": [ { "bearerToken": [] } ], "summary": "Update Team Directory Sync Role Mappings", "tags": [ "teams" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "ok": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "ok" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "path", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": true }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "roles" ], "properties": { "roles": { "type": "object", "description": "Directory groups to role or access group mappings.", "additionalProperties": { "anyOf": [ { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, { "type": "object", "additionalProperties": false, "required": [ "accessGroupId" ], "properties": { "accessGroupId": { "type": "string", "pattern": "^ag_[A-z0-9_ -]+$" } } } ] } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "postTeamDsyncRoles", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.postTeamDsyncRoles({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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", "enum": [ false, true ], "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": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource.\nThe authenticated user can't access the team" }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": true }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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." } } } } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "deleteTeam", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.deleteTeam({\n newDefaultTeamId: \"team_LLHUOMOoDlqOp8wPE4kFo9pE\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {},\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "deleteTeam", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Teams.DeleteTeam(ctx, \"\", vercel.String(\"team_LLHUOMOoDlqOp8wPE4kFo9pE\"), nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized." }, "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." } }, "parameters": [ { "name": "inviteId", "description": "The Team invite code ID.", "in": "path", "required": true, "schema": { "type": "string", "description": "The Team invite code ID.", "example": "2wn2hudbr4chb1ecywo9dvzo7g9sscs6mzcz8htdde0txyom4l" } }, { "name": "teamId", "description": "The Team identifier to perform the request on behalf of.", "in": "path", "required": true, "schema": { "type": "string", "description": "The Team identifier to perform the request on behalf of.", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteTeamInviteCode", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.deleteTeamInviteCode({\n inviteId: \"2wn2hudbr4chb1ecywo9dvzo7g9sscs6mzcz8htdde0txyom4l\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "deleteTeamInviteCode", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Teams.DeleteTeamInviteCode(ctx, \"2wn2hudbr4chb1ecywo9dvzo7g9sscs6mzcz8htdde0txyom4l\", \"team_LLHUOMOoDlqOp8wPE4kFo9pE\")\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/v1/teams/{teamId}/microfrontends/{groupId}": { "patch": { "description": "Updates the name (and slug) of a microfrontends group.", "operationId": "updateMicrofrontendsGroup", "security": [ { "bearerToken": [] } ], "summary": "Update a microfrontends group", "tags": [ "teams" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "updatedMicrofrontendsGroup": { "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, "id": { "type": "string" }, "fallbackEnvironment": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "updatedMicrofrontendsGroup" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "parameters": [ { "name": "groupId", "in": "path", "required": true, "schema": { "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "path", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": true }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "example": "MFE Group 1", "description": "The new name for the existing microfrontends group." }, "fallbackEnvironment": { "type": "string", "description": "The new fallback environment for the microfrontends group. Must be \"SAME_ENV\", \"PRODUCTION\", or a valid custom environment slug from the default app." } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateMicrofrontendsGroup", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.updateMicrofrontendsGroup({\n groupId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"MFE Group 1\",\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Deletes a microfrontends group from the team associated with the group ID.", "operationId": "deleteMicrofrontendsGroup", "security": [ { "bearerToken": [] } ], "summary": "Delete a microfrontends group", "tags": [ "teams" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "groupId", "description": "The microfrontend group ID to delete.", "in": "path", "required": true, "schema": { "type": "string", "example": "mfe_", "description": "The microfrontend group ID to delete." } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "path", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": true }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteMicrofrontendsGroup", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.teams.deleteMicrofrontendsGroup({\n groupId: \"mfe_\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "426": { "description": "" } }, "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": { "type": "string", "description": "The file SHA1 used to check the integrity", "maxLength": 40, "deprecated": true }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "uploadFile", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.deployments.uploadFile({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "uploadFile", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Deployments.UploadFile(ctx, operations.UploadFileRequest{})\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] } }, "/v6/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": { "oneOf": [ { "properties": { "tokens": { "items": { "$ref": "#/components/schemas/AuthToken" }, "type": "array" }, "pagination": { "properties": { "count": { "type": "number" }, "next": { "nullable": true, "type": "string" }, "prev": { "nullable": true, "type": "string" } }, "required": [ "count", "next", "prev" ], "type": "object" } }, "required": [ "pagination", "tokens" ], "type": "object" }, { "properties": { "tokens": { "items": { "$ref": "#/components/schemas/AuthToken" }, "type": "array" }, "pagination": { "$ref": "#/components/schemas/Pagination" } }, "required": [ "pagination", "tokens" ], "type": "object" } ] } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "list" ] }, "parameters": [], "x-codeSamples": [ { "lang": "typescript", "label": "listAuthTokens", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.authentication.listAuthTokens();\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": [ "bearerToken", "token" ], "type": "object", "description": "Successful response." } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "required": [ "name" ], "properties": { "name": { "type": "string" }, "expiresAt": { "type": "number" } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "createAuthToken", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.authentication.createAuthToken({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"\",\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "createAuthToken", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Authentication.CreateAuthToken(ctx, nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getAuthToken", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.authentication.getAuthToken({\n tokenId: \"5d9f2ebd38ddca62e5d51e9c1704c72530bdc8bfdd41e782a6687c48399e8391\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getAuthToken", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Authentication.GetAuthToken(ctx, \"5d9f2ebd38ddca62e5d51e9c1704c72530bdc8bfdd41e782a6687c48399e8391\")\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized." }, "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" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteAuthToken", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.authentication.deleteAuthToken({\n tokenId: \"5d9f2ebd38ddca62e5d51e9c1704c72530bdc8bfdd41e782a6687c48399e8391\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "deleteAuthToken", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Authentication.DeleteAuthToken(ctx, \"5d9f2ebd38ddca62e5d51e9c1704c72530bdc8bfdd41e782a6687c48399e8391\")\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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.", "x-vercel-cli": { "displayProperty": "user", "displayColumns": { "name": "user.name", "id": "user.id", "email": "user.email", "username": "user.username", "defaultTeamId": "user.defaultTeamId", "createdAt": "user.createdAt", "blockedAt": "user.softBlock.blockedAt", "blockedReason": "user.softBlock.reason" } } } } } }, "302": { "description": "" }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "409": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "parameters": [], "x-speakeasy-test": false, "x-codeSamples": [ { "lang": "typescript", "label": "getAuthUser", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.user.getAuthUser();\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getAuthUser", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.User.GetAuthUser(ctx)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": [ "email", "id", "message" ], "type": "object" } } } }, "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." } }, "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." } } } } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "requestDelete", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.user.requestDelete({});\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "requestDelete", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.User.RequestDelete(ctx, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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", "domain.created", "domain.dns.records.changed", "domain.transfer-in.started", "domain.transfer-in.completed", "domain.transfer-in.failed", "domain.certificate.add", "domain.certificate.add.failed", "domain.certificate.renew", "domain.certificate.renew.failed", "domain.certificate.deleted", "domain.renewal", "domain.renewal.failed", "domain.auto-renew.changed", "deployment.created", "deployment.build-requested", "deployment.cleanup", "deployment.error", "deployment.canceled", "deployment.succeeded", "deployment.ready", "deployment.check-rerequested", "deployment.promoted", "deployment.rollback", "deployment.integration.action.start", "deployment.integration.action.cancel", "deployment.integration.action.cleanup", "deployment.checkrun.start", "deployment.checkrun.cancel", "edge-config.created", "edge-config.deleted", "edge-config.items.updated", "firewall.attack", "firewall.system-rule-anomaly", "firewall.custom-rule-anomaly", "function.archival-required", "function.removal-required", "alerts.triggered", "integration-configuration.permission-upgraded", "integration-configuration.removed", "integration-configuration.scope-change-confirmed", "integration-configuration.transferred", "integration-resource.project-connected", "integration-resource.project-disconnected", "project.created", "project.removed", "project.renamed", "project.env-variable.created", "project.env-variable.updated", "project.env-variable.deleted", "project.domain.created", "project.domain.updated", "project.domain.deleted", "project.domain.verified", "project.domain.unverified", "project.domain.moved", "project.rolling-release.started", "project.rolling-release.aborted", "project.rolling-release.completed", "project.rolling-release.approved", "deployment.checks.failed", "deployment.checks.succeeded", "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.member.changed", "marketplace.invoice.created", "marketplace.invoice.paid", "marketplace.invoice.notpaid", "marketplace.invoice.overdue", "marketplace.invoice.refunded", "ai-gateway.balance-depleted", "ai-gateway.auto-reload.limit-reached", "observability.anomaly", "observability.anomaly-error", "observability.usage-anomaly", "observability.error-anomaly", "botid.anomaly", "flag.created", "flag.updated", "flag.deleted", "flag.segment.created", "flag.segment.updated", "flag.segment.deleted", "test-webhook", "message.created", "message.updated", "message.deleted", "thread.resolved", "thread.unresolved", "message.reaction-added", "message.reaction-removed", "message.mentioned", "comment.created", "comment.updated", "comment.deleted", "comment.resolved", "comment.unresolved", "comment.reaction-added", "comment.reaction-removed", "comment.mentioned" ], "example": "deployment.created", "description": "The webhooks events", "x-speakeasy-enums": { "budget.reached": "BudgetReached", "domain.created": "DomainCreated", "domain.dns.records.changed": "DomainDnsRecordsChanged", "domain.transfer-in.started": "DomainTransferInStarted", "domain.transfer-in.completed": "DomainTransferInCompleted", "domain.transfer-in.failed": "DomainTransferInFailed", "domain.certificate.add": "DomainCertificateAdd", "domain.certificate.add.failed": "DomainCertificateAddFailed", "domain.certificate.renew": "DomainCertificateRenew", "domain.certificate.renew.failed": "DomainCertificateRenewFailed", "domain.certificate.deleted": "DomainCertificateDeleted", "domain.renewal": "DomainRenewal", "domain.renewal.failed": "DomainRenewalFailed", "domain.auto-renew.changed": "DomainAutoRenewChanged", "deployment.created": "DeploymentCreated", "deployment.cleanup": "DeploymentCleanup", "deployment.error": "DeploymentError", "deployment.canceled": "DeploymentCanceled", "deployment.succeeded": "DeploymentSucceeded", "deployment.ready": "DeploymentReady", "deployment.check-rerequested": "DeploymentCheckRerequested", "deployment.promoted": "DeploymentPromoted", "deployment.integration.action.start": "DeploymentIntegrationActionStart", "deployment.integration.action.cancel": "DeploymentIntegrationActionCancel", "deployment.integration.action.cleanup": "DeploymentIntegrationActionCleanup", "deployment.checkrun.start": "DeploymentCheckrunStart", "deployment.checkrun.cancel": "DeploymentCheckrunCancel", "edge-config.created": "EdgeConfigCreated", "edge-config.deleted": "EdgeConfigDeleted", "edge-config.items.updated": "EdgeConfigItemsUpdated", "firewall.attack": "FirewallAttack", "integration-configuration.permission-upgraded": "IntegrationConfigurationPermissionUpgraded", "integration-configuration.removed": "IntegrationConfigurationRemoved", "integration-configuration.scope-change-confirmed": "IntegrationConfigurationScopeChangeConfirmed", "integration-resource.project-connected": "IntegrationResourceProjectConnected", "integration-resource.project-disconnected": "IntegrationResourceProjectDisconnected", "project.created": "ProjectCreated", "project.removed": "ProjectRemoved", "project.domain.created": "ProjectDomainCreated", "project.domain.updated": "ProjectDomainUpdated", "project.domain.deleted": "ProjectDomainDeleted", "project.domain.verified": "ProjectDomainVerified", "project.domain.unverified": "ProjectDomainUnverified", "project.domain.moved": "ProjectDomainMoved", "project.rolling-release.started": "ProjectRollingReleaseStarted", "project.rolling-release.aborted": "ProjectRollingReleaseAborted", "project.rolling-release.completed": "ProjectRollingReleaseCompleted", "project.rolling-release.approved": "ProjectRollingReleaseApproved", "deployment.checks.failed": "DeploymentChecksFailed", "deployment.checks.succeeded": "DeploymentChecksSucceeded", "deployment-checks-completed": "DeploymentChecksCompleted", "deployment-ready": "DeploymentReadyHyphen", "deployment-prepared": "DeploymentPreparedHyphen", "deployment-error": "DeploymentErrorHyphen", "deployment-check-rerequested": "DeploymentCheckRerequestedHyphen", "deployment-canceled": "DeploymentCanceledHyphen", "project-created": "ProjectCreatedHyphen", "project-removed": "ProjectRemovedHyphen", "domain-created": "DomainCreatedHyphen", "deployment": "Deployment", "integration-configuration-permission-updated": "IntegrationConfigurationPermissionUpdatedHyphen", "integration-configuration-removed": "IntegrationConfigurationRemovedHyphen", "integration-configuration-scope-change-confirmed": "IntegrationConfigurationScopeChangeConfirmedHyphen", "marketplace.invoice.created": "MarketplaceInvoiceCreated", "marketplace.invoice.paid": "MarketplaceInvoicePaid", "marketplace.invoice.notpaid": "MarketplaceInvoiceNotpaid", "marketplace.invoice.refunded": "MarketplaceInvoiceRefunded", "observability.anomaly": "ObservabilityAnomaly", "observability.anomaly-error": "ObservabilityAnomalyError", "test-webhook": "TestWebhook" } }, "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": [ "createdAt", "events", "id", "ownerId", "secret", "updatedAt", "url" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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", "domain.created", "domain.dns.records.changed", "domain.transfer-in.started", "domain.transfer-in.completed", "domain.transfer-in.failed", "domain.certificate.add", "domain.certificate.add.failed", "domain.certificate.renew", "domain.certificate.renew.failed", "domain.certificate.deleted", "domain.renewal", "domain.renewal.failed", "domain.auto-renew.changed", "deployment.created", "deployment.build-requested", "deployment.cleanup", "deployment.error", "deployment.canceled", "deployment.succeeded", "deployment.ready", "deployment.check-rerequested", "deployment.promoted", "deployment.rollback", "deployment.integration.action.start", "deployment.integration.action.cancel", "deployment.integration.action.cleanup", "deployment.checkrun.start", "deployment.checkrun.cancel", "edge-config.created", "edge-config.deleted", "edge-config.items.updated", "firewall.attack", "firewall.system-rule-anomaly", "firewall.custom-rule-anomaly", "function.archival-required", "function.removal-required", "alerts.triggered", "integration-configuration.permission-upgraded", "integration-configuration.removed", "integration-configuration.scope-change-confirmed", "integration-configuration.transferred", "integration-resource.project-connected", "integration-resource.project-disconnected", "project.created", "project.removed", "project.renamed", "project.env-variable.created", "project.env-variable.updated", "project.env-variable.deleted", "project.domain.created", "project.domain.updated", "project.domain.deleted", "project.domain.verified", "project.domain.unverified", "project.domain.moved", "project.rolling-release.started", "project.rolling-release.aborted", "project.rolling-release.completed", "project.rolling-release.approved", "deployment.checks.failed", "deployment.checks.succeeded", "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.member.changed", "marketplace.invoice.created", "marketplace.invoice.paid", "marketplace.invoice.notpaid", "marketplace.invoice.overdue", "marketplace.invoice.refunded", "ai-gateway.balance-depleted", "ai-gateway.auto-reload.limit-reached", "observability.anomaly", "observability.anomaly-error", "observability.usage-anomaly", "observability.error-anomaly", "botid.anomaly", "flag.created", "flag.updated", "flag.deleted", "flag.segment.created", "flag.segment.updated", "flag.segment.deleted", "test-webhook", "message.created", "message.updated", "message.deleted", "thread.resolved", "thread.unresolved", "message.reaction-added", "message.reaction-removed", "message.mentioned", "comment.created", "comment.updated", "comment.deleted", "comment.resolved", "comment.unresolved", "comment.reaction-added", "comment.reaction-removed", "comment.mentioned" ], "x-speakeasy-enums": { "budget.reached": "BudgetReached", "domain.created": "DomainCreated", "domain.dns.records.changed": "DomainDnsRecordsChanged", "domain.transfer-in.started": "DomainTransferInStarted", "domain.transfer-in.completed": "DomainTransferInCompleted", "domain.transfer-in.failed": "DomainTransferInFailed", "domain.certificate.add": "DomainCertificateAdd", "domain.certificate.add.failed": "DomainCertificateAddFailed", "domain.certificate.renew": "DomainCertificateRenew", "domain.certificate.renew.failed": "DomainCertificateRenewFailed", "domain.certificate.deleted": "DomainCertificateDeleted", "domain.renewal": "DomainRenewal", "domain.renewal.failed": "DomainRenewalFailed", "domain.auto-renew.changed": "DomainAutoRenewChanged", "deployment.created": "DeploymentCreated", "deployment.cleanup": "DeploymentCleanup", "deployment.error": "DeploymentError", "deployment.canceled": "DeploymentCanceled", "deployment.succeeded": "DeploymentSucceeded", "deployment.ready": "DeploymentReady", "deployment.check-rerequested": "DeploymentCheckRerequested", "deployment.promoted": "DeploymentPromoted", "deployment.integration.action.start": "DeploymentIntegrationActionStart", "deployment.integration.action.cancel": "DeploymentIntegrationActionCancel", "deployment.integration.action.cleanup": "DeploymentIntegrationActionCleanup", "deployment.checkrun.start": "DeploymentCheckrunStart", "deployment.checkrun.cancel": "DeploymentCheckrunCancel", "edge-config.created": "EdgeConfigCreated", "edge-config.deleted": "EdgeConfigDeleted", "edge-config.items.updated": "EdgeConfigItemsUpdated", "firewall.attack": "FirewallAttack", "integration-configuration.permission-upgraded": "IntegrationConfigurationPermissionUpgraded", "integration-configuration.removed": "IntegrationConfigurationRemoved", "integration-configuration.scope-change-confirmed": "IntegrationConfigurationScopeChangeConfirmed", "integration-resource.project-connected": "IntegrationResourceProjectConnected", "integration-resource.project-disconnected": "IntegrationResourceProjectDisconnected", "project.created": "ProjectCreated", "project.removed": "ProjectRemoved", "project.domain.created": "ProjectDomainCreated", "project.domain.updated": "ProjectDomainUpdated", "project.domain.deleted": "ProjectDomainDeleted", "project.domain.verified": "ProjectDomainVerified", "project.domain.unverified": "ProjectDomainUnverified", "project.domain.moved": "ProjectDomainMoved", "project.rolling-release.started": "ProjectRollingReleaseStarted", "project.rolling-release.aborted": "ProjectRollingReleaseAborted", "project.rolling-release.completed": "ProjectRollingReleaseCompleted", "project.rolling-release.approved": "ProjectRollingReleaseApproved", "deployment.checks.failed": "DeploymentChecksFailed", "deployment.checks.succeeded": "DeploymentChecksSucceeded", "deployment-checks-completed": "DeploymentChecksCompleted", "deployment-ready": "DeploymentReadyHyphen", "deployment-prepared": "DeploymentPreparedHyphen", "deployment-error": "DeploymentErrorHyphen", "deployment-check-rerequested": "DeploymentCheckRerequestedHyphen", "deployment-canceled": "DeploymentCanceledHyphen", "project-created": "ProjectCreatedHyphen", "project-removed": "ProjectRemovedHyphen", "domain-created": "DomainCreatedHyphen", "deployment": "Deployment", "integration-configuration-permission-updated": "IntegrationConfigurationPermissionUpdatedHyphen", "integration-configuration-removed": "IntegrationConfigurationRemovedHyphen", "integration-configuration-scope-change-confirmed": "IntegrationConfigurationScopeChangeConfirmedHyphen", "marketplace.invoice.created": "MarketplaceInvoiceCreated", "marketplace.invoice.paid": "MarketplaceInvoicePaid", "marketplace.invoice.notpaid": "MarketplaceInvoiceNotpaid", "marketplace.invoice.refunded": "MarketplaceInvoiceRefunded", "observability.anomaly": "ObservabilityAnomaly", "observability.anomaly-error": "ObservabilityAnomalyError", "test-webhook": "TestWebhook" } } }, "projectIds": { "minItems": 1, "maxItems": 50, "type": "array", "items": { "pattern": "^[a-zA-z0-9_]+$", "type": "string" } } } } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "createWebhook", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.webhooks.createWebhook({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n url: \"https://experienced-sailor.biz/\",\n events: [\n \"deployment.promoted\",\n \"deployment.error\",\n \"deployment.integration.action.cancel\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "createWebhook", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Webhooks.CreateWebhook(ctx, nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "get": { "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", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "services", "mastra", null ] }, "latestDeployment": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "events": { "items": { "type": "string", "enum": [ "budget.reached", "domain.created", "domain.dns.records.changed", "domain.transfer-in.started", "domain.transfer-in.completed", "domain.transfer-in.failed", "domain.certificate.add", "domain.certificate.add.failed", "domain.certificate.renew", "domain.certificate.renew.failed", "domain.certificate.deleted", "domain.renewal", "domain.renewal.failed", "domain.auto-renew.changed", "deployment.created", "deployment.build-requested", "deployment.cleanup", "deployment.error", "deployment.canceled", "deployment.succeeded", "deployment.ready", "deployment.check-rerequested", "deployment.promoted", "deployment.rollback", "deployment.integration.action.start", "deployment.integration.action.cancel", "deployment.integration.action.cleanup", "deployment.checkrun.start", "deployment.checkrun.cancel", "edge-config.created", "edge-config.deleted", "edge-config.items.updated", "firewall.attack", "firewall.system-rule-anomaly", "firewall.custom-rule-anomaly", "function.archival-required", "function.removal-required", "alerts.triggered", "integration-configuration.permission-upgraded", "integration-configuration.removed", "integration-configuration.scope-change-confirmed", "integration-configuration.transferred", "integration-resource.project-connected", "integration-resource.project-disconnected", "project.created", "project.removed", "project.renamed", "project.env-variable.created", "project.env-variable.updated", "project.env-variable.deleted", "project.domain.created", "project.domain.updated", "project.domain.deleted", "project.domain.verified", "project.domain.unverified", "project.domain.moved", "project.rolling-release.started", "project.rolling-release.aborted", "project.rolling-release.completed", "project.rolling-release.approved", "deployment.checks.failed", "deployment.checks.succeeded", "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.member.changed", "marketplace.invoice.created", "marketplace.invoice.paid", "marketplace.invoice.notpaid", "marketplace.invoice.overdue", "marketplace.invoice.refunded", "ai-gateway.balance-depleted", "ai-gateway.auto-reload.limit-reached", "observability.anomaly", "observability.anomaly-error", "observability.usage-anomaly", "observability.error-anomaly", "botid.anomaly", "flag.created", "flag.updated", "flag.deleted", "flag.segment.created", "flag.segment.updated", "flag.segment.deleted", "test-webhook", "message.created", "message.updated", "message.deleted", "thread.resolved", "thread.unresolved", "message.reaction-added", "message.reaction-removed", "message.mentioned", "comment.created", "comment.updated", "comment.deleted", "comment.resolved", "comment.unresolved", "comment.reaction-added", "comment.reaction-removed", "comment.mentioned" ], "example": "deployment.created", "description": "The webhooks events", "x-speakeasy-enums": { "budget.reached": "BudgetReached", "domain.created": "DomainCreated", "domain.dns.records.changed": "DomainDnsRecordsChanged", "domain.transfer-in.started": "DomainTransferInStarted", "domain.transfer-in.completed": "DomainTransferInCompleted", "domain.transfer-in.failed": "DomainTransferInFailed", "domain.certificate.add": "DomainCertificateAdd", "domain.certificate.add.failed": "DomainCertificateAddFailed", "domain.certificate.renew": "DomainCertificateRenew", "domain.certificate.renew.failed": "DomainCertificateRenewFailed", "domain.certificate.deleted": "DomainCertificateDeleted", "domain.renewal": "DomainRenewal", "domain.renewal.failed": "DomainRenewalFailed", "domain.auto-renew.changed": "DomainAutoRenewChanged", "deployment.created": "DeploymentCreated", "deployment.cleanup": "DeploymentCleanup", "deployment.error": "DeploymentError", "deployment.canceled": "DeploymentCanceled", "deployment.succeeded": "DeploymentSucceeded", "deployment.ready": "DeploymentReady", "deployment.check-rerequested": "DeploymentCheckRerequested", "deployment.promoted": "DeploymentPromoted", "deployment.integration.action.start": "DeploymentIntegrationActionStart", "deployment.integration.action.cancel": "DeploymentIntegrationActionCancel", "deployment.integration.action.cleanup": "DeploymentIntegrationActionCleanup", "deployment.checkrun.start": "DeploymentCheckrunStart", "deployment.checkrun.cancel": "DeploymentCheckrunCancel", "edge-config.created": "EdgeConfigCreated", "edge-config.deleted": "EdgeConfigDeleted", "edge-config.items.updated": "EdgeConfigItemsUpdated", "firewall.attack": "FirewallAttack", "integration-configuration.permission-upgraded": "IntegrationConfigurationPermissionUpgraded", "integration-configuration.removed": "IntegrationConfigurationRemoved", "integration-configuration.scope-change-confirmed": "IntegrationConfigurationScopeChangeConfirmed", "integration-resource.project-connected": "IntegrationResourceProjectConnected", "integration-resource.project-disconnected": "IntegrationResourceProjectDisconnected", "project.created": "ProjectCreated", "project.removed": "ProjectRemoved", "project.domain.created": "ProjectDomainCreated", "project.domain.updated": "ProjectDomainUpdated", "project.domain.deleted": "ProjectDomainDeleted", "project.domain.verified": "ProjectDomainVerified", "project.domain.unverified": "ProjectDomainUnverified", "project.domain.moved": "ProjectDomainMoved", "project.rolling-release.started": "ProjectRollingReleaseStarted", "project.rolling-release.aborted": "ProjectRollingReleaseAborted", "project.rolling-release.completed": "ProjectRollingReleaseCompleted", "project.rolling-release.approved": "ProjectRollingReleaseApproved", "deployment.checks.failed": "DeploymentChecksFailed", "deployment.checks.succeeded": "DeploymentChecksSucceeded", "deployment-checks-completed": "DeploymentChecksCompleted", "deployment-ready": "DeploymentReadyHyphen", "deployment-prepared": "DeploymentPreparedHyphen", "deployment-error": "DeploymentErrorHyphen", "deployment-check-rerequested": "DeploymentCheckRerequestedHyphen", "deployment-canceled": "DeploymentCanceledHyphen", "project-created": "ProjectCreatedHyphen", "project-removed": "ProjectRemovedHyphen", "domain-created": "DomainCreatedHyphen", "deployment": "Deployment", "integration-configuration-permission-updated": "IntegrationConfigurationPermissionUpdatedHyphen", "integration-configuration-removed": "IntegrationConfigurationRemovedHyphen", "integration-configuration-scope-change-confirmed": "IntegrationConfigurationScopeChangeConfirmedHyphen", "marketplace.invoice.created": "MarketplaceInvoiceCreated", "marketplace.invoice.paid": "MarketplaceInvoicePaid", "marketplace.invoice.notpaid": "MarketplaceInvoiceNotpaid", "marketplace.invoice.refunded": "MarketplaceInvoiceRefunded", "observability.anomaly": "ObservabilityAnomaly", "observability.anomaly-error": "ObservabilityAnomalyError", "test-webhook": "TestWebhook" } }, "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": [ "createdAt", "events", "id", "ownerId", "projectsMetadata", "updatedAt", "url" ], "type": "object" }, "type": "array" }, { "items": { "properties": { "events": { "items": { "type": "string", "enum": [ "budget.reached", "domain.created", "domain.dns.records.changed", "domain.transfer-in.started", "domain.transfer-in.completed", "domain.transfer-in.failed", "domain.certificate.add", "domain.certificate.add.failed", "domain.certificate.renew", "domain.certificate.renew.failed", "domain.certificate.deleted", "domain.renewal", "domain.renewal.failed", "domain.auto-renew.changed", "deployment.created", "deployment.build-requested", "deployment.cleanup", "deployment.error", "deployment.canceled", "deployment.succeeded", "deployment.ready", "deployment.check-rerequested", "deployment.promoted", "deployment.rollback", "deployment.integration.action.start", "deployment.integration.action.cancel", "deployment.integration.action.cleanup", "deployment.checkrun.start", "deployment.checkrun.cancel", "edge-config.created", "edge-config.deleted", "edge-config.items.updated", "firewall.attack", "firewall.system-rule-anomaly", "firewall.custom-rule-anomaly", "function.archival-required", "function.removal-required", "alerts.triggered", "integration-configuration.permission-upgraded", "integration-configuration.removed", "integration-configuration.scope-change-confirmed", "integration-configuration.transferred", "integration-resource.project-connected", "integration-resource.project-disconnected", "project.created", "project.removed", "project.renamed", "project.env-variable.created", "project.env-variable.updated", "project.env-variable.deleted", "project.domain.created", "project.domain.updated", "project.domain.deleted", "project.domain.verified", "project.domain.unverified", "project.domain.moved", "project.rolling-release.started", "project.rolling-release.aborted", "project.rolling-release.completed", "project.rolling-release.approved", "deployment.checks.failed", "deployment.checks.succeeded", "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.member.changed", "marketplace.invoice.created", "marketplace.invoice.paid", "marketplace.invoice.notpaid", "marketplace.invoice.overdue", "marketplace.invoice.refunded", "ai-gateway.balance-depleted", "ai-gateway.auto-reload.limit-reached", "observability.anomaly", "observability.anomaly-error", "observability.usage-anomaly", "observability.error-anomaly", "botid.anomaly", "flag.created", "flag.updated", "flag.deleted", "flag.segment.created", "flag.segment.updated", "flag.segment.deleted", "test-webhook", "message.created", "message.updated", "message.deleted", "thread.resolved", "thread.unresolved", "message.reaction-added", "message.reaction-removed", "message.mentioned", "comment.created", "comment.updated", "comment.deleted", "comment.resolved", "comment.unresolved", "comment.reaction-added", "comment.reaction-removed", "comment.mentioned" ], "example": "deployment.created", "description": "The webhooks events", "x-speakeasy-enums": { "budget.reached": "BudgetReached", "domain.created": "DomainCreated", "domain.dns.records.changed": "DomainDnsRecordsChanged", "domain.transfer-in.started": "DomainTransferInStarted", "domain.transfer-in.completed": "DomainTransferInCompleted", "domain.transfer-in.failed": "DomainTransferInFailed", "domain.certificate.add": "DomainCertificateAdd", "domain.certificate.add.failed": "DomainCertificateAddFailed", "domain.certificate.renew": "DomainCertificateRenew", "domain.certificate.renew.failed": "DomainCertificateRenewFailed", "domain.certificate.deleted": "DomainCertificateDeleted", "domain.renewal": "DomainRenewal", "domain.renewal.failed": "DomainRenewalFailed", "domain.auto-renew.changed": "DomainAutoRenewChanged", "deployment.created": "DeploymentCreated", "deployment.cleanup": "DeploymentCleanup", "deployment.error": "DeploymentError", "deployment.canceled": "DeploymentCanceled", "deployment.succeeded": "DeploymentSucceeded", "deployment.ready": "DeploymentReady", "deployment.check-rerequested": "DeploymentCheckRerequested", "deployment.promoted": "DeploymentPromoted", "deployment.integration.action.start": "DeploymentIntegrationActionStart", "deployment.integration.action.cancel": "DeploymentIntegrationActionCancel", "deployment.integration.action.cleanup": "DeploymentIntegrationActionCleanup", "deployment.checkrun.start": "DeploymentCheckrunStart", "deployment.checkrun.cancel": "DeploymentCheckrunCancel", "edge-config.created": "EdgeConfigCreated", "edge-config.deleted": "EdgeConfigDeleted", "edge-config.items.updated": "EdgeConfigItemsUpdated", "firewall.attack": "FirewallAttack", "integration-configuration.permission-upgraded": "IntegrationConfigurationPermissionUpgraded", "integration-configuration.removed": "IntegrationConfigurationRemoved", "integration-configuration.scope-change-confirmed": "IntegrationConfigurationScopeChangeConfirmed", "integration-resource.project-connected": "IntegrationResourceProjectConnected", "integration-resource.project-disconnected": "IntegrationResourceProjectDisconnected", "project.created": "ProjectCreated", "project.removed": "ProjectRemoved", "project.domain.created": "ProjectDomainCreated", "project.domain.updated": "ProjectDomainUpdated", "project.domain.deleted": "ProjectDomainDeleted", "project.domain.verified": "ProjectDomainVerified", "project.domain.unverified": "ProjectDomainUnverified", "project.domain.moved": "ProjectDomainMoved", "project.rolling-release.started": "ProjectRollingReleaseStarted", "project.rolling-release.aborted": "ProjectRollingReleaseAborted", "project.rolling-release.completed": "ProjectRollingReleaseCompleted", "project.rolling-release.approved": "ProjectRollingReleaseApproved", "deployment.checks.failed": "DeploymentChecksFailed", "deployment.checks.succeeded": "DeploymentChecksSucceeded", "deployment-checks-completed": "DeploymentChecksCompleted", "deployment-ready": "DeploymentReadyHyphen", "deployment-prepared": "DeploymentPreparedHyphen", "deployment-error": "DeploymentErrorHyphen", "deployment-check-rerequested": "DeploymentCheckRerequestedHyphen", "deployment-canceled": "DeploymentCanceledHyphen", "project-created": "ProjectCreatedHyphen", "project-removed": "ProjectRemovedHyphen", "domain-created": "DomainCreatedHyphen", "deployment": "Deployment", "integration-configuration-permission-updated": "IntegrationConfigurationPermissionUpdatedHyphen", "integration-configuration-removed": "IntegrationConfigurationRemovedHyphen", "integration-configuration-scope-change-confirmed": "IntegrationConfigurationScopeChangeConfirmedHyphen", "marketplace.invoice.created": "MarketplaceInvoiceCreated", "marketplace.invoice.paid": "MarketplaceInvoicePaid", "marketplace.invoice.notpaid": "MarketplaceInvoiceNotpaid", "marketplace.invoice.refunded": "MarketplaceInvoiceRefunded", "observability.anomaly": "ObservabilityAnomaly", "observability.anomaly-error": "ObservabilityAnomalyError", "test-webhook": "TestWebhook" } }, "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": [ "createdAt", "events", "id", "ownerId", "updatedAt", "url" ], "type": "object" }, "type": "array" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getWebhooks", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.webhooks.getWebhooks({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getWebhooks", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Webhooks.GetWebhooks(ctx, nil, nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.OneOf != nil {\n // handle response\n }\n}" } ] } }, "/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", "domain.created", "domain.dns.records.changed", "domain.transfer-in.started", "domain.transfer-in.completed", "domain.transfer-in.failed", "domain.certificate.add", "domain.certificate.add.failed", "domain.certificate.renew", "domain.certificate.renew.failed", "domain.certificate.deleted", "domain.renewal", "domain.renewal.failed", "domain.auto-renew.changed", "deployment.created", "deployment.build-requested", "deployment.cleanup", "deployment.error", "deployment.canceled", "deployment.succeeded", "deployment.ready", "deployment.check-rerequested", "deployment.promoted", "deployment.rollback", "deployment.integration.action.start", "deployment.integration.action.cancel", "deployment.integration.action.cleanup", "deployment.checkrun.start", "deployment.checkrun.cancel", "edge-config.created", "edge-config.deleted", "edge-config.items.updated", "firewall.attack", "firewall.system-rule-anomaly", "firewall.custom-rule-anomaly", "function.archival-required", "function.removal-required", "alerts.triggered", "integration-configuration.permission-upgraded", "integration-configuration.removed", "integration-configuration.scope-change-confirmed", "integration-configuration.transferred", "integration-resource.project-connected", "integration-resource.project-disconnected", "project.created", "project.removed", "project.renamed", "project.env-variable.created", "project.env-variable.updated", "project.env-variable.deleted", "project.domain.created", "project.domain.updated", "project.domain.deleted", "project.domain.verified", "project.domain.unverified", "project.domain.moved", "project.rolling-release.started", "project.rolling-release.aborted", "project.rolling-release.completed", "project.rolling-release.approved", "deployment.checks.failed", "deployment.checks.succeeded", "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.member.changed", "marketplace.invoice.created", "marketplace.invoice.paid", "marketplace.invoice.notpaid", "marketplace.invoice.overdue", "marketplace.invoice.refunded", "ai-gateway.balance-depleted", "ai-gateway.auto-reload.limit-reached", "observability.anomaly", "observability.anomaly-error", "observability.usage-anomaly", "observability.error-anomaly", "botid.anomaly", "flag.created", "flag.updated", "flag.deleted", "flag.segment.created", "flag.segment.updated", "flag.segment.deleted", "test-webhook", "message.created", "message.updated", "message.deleted", "thread.resolved", "thread.unresolved", "message.reaction-added", "message.reaction-removed", "message.mentioned", "comment.created", "comment.updated", "comment.deleted", "comment.resolved", "comment.unresolved", "comment.reaction-added", "comment.reaction-removed", "comment.mentioned" ], "example": "deployment.created", "description": "The webhooks events", "x-speakeasy-enums": { "budget.reached": "BudgetReached", "domain.created": "DomainCreated", "domain.dns.records.changed": "DomainDnsRecordsChanged", "domain.transfer-in.started": "DomainTransferInStarted", "domain.transfer-in.completed": "DomainTransferInCompleted", "domain.transfer-in.failed": "DomainTransferInFailed", "domain.certificate.add": "DomainCertificateAdd", "domain.certificate.add.failed": "DomainCertificateAddFailed", "domain.certificate.renew": "DomainCertificateRenew", "domain.certificate.renew.failed": "DomainCertificateRenewFailed", "domain.certificate.deleted": "DomainCertificateDeleted", "domain.renewal": "DomainRenewal", "domain.renewal.failed": "DomainRenewalFailed", "domain.auto-renew.changed": "DomainAutoRenewChanged", "deployment.created": "DeploymentCreated", "deployment.cleanup": "DeploymentCleanup", "deployment.error": "DeploymentError", "deployment.canceled": "DeploymentCanceled", "deployment.succeeded": "DeploymentSucceeded", "deployment.ready": "DeploymentReady", "deployment.check-rerequested": "DeploymentCheckRerequested", "deployment.promoted": "DeploymentPromoted", "deployment.integration.action.start": "DeploymentIntegrationActionStart", "deployment.integration.action.cancel": "DeploymentIntegrationActionCancel", "deployment.integration.action.cleanup": "DeploymentIntegrationActionCleanup", "deployment.checkrun.start": "DeploymentCheckrunStart", "deployment.checkrun.cancel": "DeploymentCheckrunCancel", "edge-config.created": "EdgeConfigCreated", "edge-config.deleted": "EdgeConfigDeleted", "edge-config.items.updated": "EdgeConfigItemsUpdated", "firewall.attack": "FirewallAttack", "integration-configuration.permission-upgraded": "IntegrationConfigurationPermissionUpgraded", "integration-configuration.removed": "IntegrationConfigurationRemoved", "integration-configuration.scope-change-confirmed": "IntegrationConfigurationScopeChangeConfirmed", "integration-resource.project-connected": "IntegrationResourceProjectConnected", "integration-resource.project-disconnected": "IntegrationResourceProjectDisconnected", "project.created": "ProjectCreated", "project.removed": "ProjectRemoved", "project.domain.created": "ProjectDomainCreated", "project.domain.updated": "ProjectDomainUpdated", "project.domain.deleted": "ProjectDomainDeleted", "project.domain.verified": "ProjectDomainVerified", "project.domain.unverified": "ProjectDomainUnverified", "project.domain.moved": "ProjectDomainMoved", "project.rolling-release.started": "ProjectRollingReleaseStarted", "project.rolling-release.aborted": "ProjectRollingReleaseAborted", "project.rolling-release.completed": "ProjectRollingReleaseCompleted", "project.rolling-release.approved": "ProjectRollingReleaseApproved", "deployment.checks.failed": "DeploymentChecksFailed", "deployment.checks.succeeded": "DeploymentChecksSucceeded", "deployment-checks-completed": "DeploymentChecksCompleted", "deployment-ready": "DeploymentReadyHyphen", "deployment-prepared": "DeploymentPreparedHyphen", "deployment-error": "DeploymentErrorHyphen", "deployment-check-rerequested": "DeploymentCheckRerequestedHyphen", "deployment-canceled": "DeploymentCanceledHyphen", "project-created": "ProjectCreatedHyphen", "project-removed": "ProjectRemovedHyphen", "domain-created": "DomainCreatedHyphen", "deployment": "Deployment", "integration-configuration-permission-updated": "IntegrationConfigurationPermissionUpdatedHyphen", "integration-configuration-removed": "IntegrationConfigurationRemovedHyphen", "integration-configuration-scope-change-confirmed": "IntegrationConfigurationScopeChangeConfirmedHyphen", "marketplace.invoice.created": "MarketplaceInvoiceCreated", "marketplace.invoice.paid": "MarketplaceInvoicePaid", "marketplace.invoice.notpaid": "MarketplaceInvoiceNotpaid", "marketplace.invoice.refunded": "MarketplaceInvoiceRefunded", "observability.anomaly": "ObservabilityAnomaly", "observability.anomaly-error": "ObservabilityAnomalyError", "test-webhook": "TestWebhook" } }, "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": [ "createdAt", "events", "id", "ownerId", "updatedAt", "url" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getWebhook", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.webhooks.getWebhook({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getWebhook", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Webhooks.GetWebhook(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteWebhook", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.webhooks.deleteWebhook({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" }, { "lang": "go", "label": "deleteWebhook", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Webhooks.DeleteWebhook(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res != nil {\n // handle response\n }\n}" } ] } }, "/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" ] }, "expires": { "type": "number" } }, "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": [ "access", "createdAt", "lastUpdatedAt", "lastUpdatedBy", "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", "uid" ], "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "The deployment was not found" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "for-deployment" ] }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listDeploymentAliases", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aliases.listDeploymentAliases({\n id: \"dpl_FjvFJncQHQcZMznrUm9EoB8sFuPa\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "listDeploymentAliases", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Aliases.ListDeploymentAliases(ctx, \"dpl_FjvFJncQHQcZMznrUm9EoB8sFuPa\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] }, "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": [ "alias", "created", "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.\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": "The request is not authorized." }, "402": { "description": "The 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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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" } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "assignAlias", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aliases.assignAlias({\n id: \"dpl_FjvFJncQHQcZMznrUm9EoB8sFuPa\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n alias: \"my-alias.vercel.app\",\n redirect: null,\n },\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "assignAlias", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Aliases.AssignAlias(ctx, \"\", nil, nil, &operations.AssignAliasRequestBody{\n Alias: vercel.String(\"my-alias.vercel.app\"),\n Redirect: nil,\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": [ "email", "uid", "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, "nullable": true }, "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, null ], "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" ] }, "expires": { "type": "number" } }, "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": [ "access", "createdAt", "lastUpdatedAt", "lastUpdatedBy", "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" }, "microfrontends": { "properties": { "defaultApp": { "properties": { "projectId": { "type": "string" } }, "required": [ "projectId" ], "type": "object" }, "applications": { "oneOf": [ { "items": { "properties": { "fallbackHost": { "type": "string", "description": "This is always set. In production it is used as a pointer to each apps production deployment. For pre-production, it's used as the fallback if there is no deployment for the branch." }, "projectId": { "type": "string", "description": "The project ID of the microfrontends application." } }, "required": [ "fallbackHost", "projectId" ], "type": "object", "description": "A list of the deployment routing information for each project." }, "type": "array", "description": "A list of the deployment routing information for each project." }, { "items": { "properties": { "fallbackHost": { "type": "string", "description": "This is always set. For branch aliases, it's used as the fallback if there is no deployment for the branch." }, "branchAlias": { "type": "string", "description": "Could point to a branch without a deployment if the project was never deployed. The proxy will fallback to the fallbackHost if there is no deployment." }, "projectId": { "type": "string", "description": "The project ID of the microfrontends application." } }, "required": [ "branchAlias", "fallbackHost", "projectId" ], "type": "object", "description": "A list of the deployment routing information for each project." }, "type": "array", "description": "A list of the deployment routing information for each project." }, { "items": { "properties": { "deploymentId": { "type": "string", "description": "This is the deployment for the same commit, it could be a cancelled deployment. The proxy will fallback to the branchDeploymentId and then the fallbackDeploymentId." }, "branchDeploymentId": { "type": "string", "description": "This is the latest non-cancelled deployment of the branch alias at the time the commit alias was created. It is possible there is no deployment for the branch, or this was set before the deployment was canceled, in which case this will point to a cancelled deployment, in either case the proxy will fallback to the fallbackDeploymentId." }, "fallbackDeploymentId": { "type": "string", "description": "This is the deployment of the fallback host at the time the commit alias was created. It is possible for this to be a deleted deployment, in which case the proxy will show that the deployment is deleted. It will not use the fallbackHost, as a future deployment on the fallback host could be invalid for this deployment, and it could lead to confusion / incorrect behavior for the commit alias." }, "fallbackHost": { "type": "string", "description": "Temporary for backwards compatibility. Can remove when metadata change is released" }, "branchAlias": { "type": "string" }, "projectId": { "type": "string", "description": "The project ID of the microfrontends application." } }, "required": [ "projectId" ], "type": "object", "description": "A list of the deployment routing information for each project." }, "type": "array", "description": "A list of the deployment routing information for each project." } ] } }, "required": [ "applications", "defaultApp" ], "type": "object", "description": "The microfrontends for the alias including the routing configuration" } }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "list" ] }, "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", "maxItems": 20, "oneOf": [ { "type": "array", "items": { "type": "string" } }, { "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listAliases", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aliases.listAliases({\n domain: \"my-test-domain.com\",\n from: 1540095775951,\n limit: 10,\n projectId: \"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n since: 1540095775941,\n until: 1540095775951,\n rollbackDeploymentId: \"dpl_XXX\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "listAliases", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Aliases.ListAliases(ctx, operations.ListAliasesRequest{\n Domain: vercel.Pointer(operations.CreateDomainStr(\n \"my-test-domain.com\",\n )),\n From: vercel.Float64(1540095775951),\n Limit: vercel.Float64(10),\n ProjectID: vercel.String(\"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\"),\n Since: vercel.Float64(1540095775941),\n Until: vercel.Float64(1540095775951),\n RollbackDeploymentID: vercel.String(\"dpl_XXX\"),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": { "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, "nullable": true }, "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": [ "email", "uid", "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, "nullable": true }, "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, null ], "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, "nullable": true }, "protectionBypass": { "additionalProperties": { "oneOf": [ { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "shareable-link" ] }, "expires": { "type": "number" } }, "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": [ "access", "createdAt", "lastUpdatedAt", "lastUpdatedBy", "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" }, "microfrontends": { "properties": { "defaultApp": { "properties": { "projectId": { "type": "string" } }, "required": [ "projectId" ], "type": "object" }, "applications": { "oneOf": [ { "items": { "properties": { "fallbackHost": { "type": "string", "description": "This is always set. In production it is used as a pointer to each apps production deployment. For pre-production, it's used as the fallback if there is no deployment for the branch." }, "projectId": { "type": "string", "description": "The project ID of the microfrontends application." } }, "required": [ "fallbackHost", "projectId" ], "type": "object", "description": "A list of the deployment routing information for each project." }, "type": "array", "description": "A list of the deployment routing information for each project." }, { "items": { "properties": { "fallbackHost": { "type": "string", "description": "This is always set. For branch aliases, it's used as the fallback if there is no deployment for the branch." }, "branchAlias": { "type": "string", "description": "Could point to a branch without a deployment if the project was never deployed. The proxy will fallback to the fallbackHost if there is no deployment." }, "projectId": { "type": "string", "description": "The project ID of the microfrontends application." } }, "required": [ "branchAlias", "fallbackHost", "projectId" ], "type": "object", "description": "A list of the deployment routing information for each project." }, "type": "array", "description": "A list of the deployment routing information for each project." }, { "items": { "properties": { "deploymentId": { "type": "string", "description": "This is the deployment for the same commit, it could be a cancelled deployment. The proxy will fallback to the branchDeploymentId and then the fallbackDeploymentId." }, "branchDeploymentId": { "type": "string", "description": "This is the latest non-cancelled deployment of the branch alias at the time the commit alias was created. It is possible there is no deployment for the branch, or this was set before the deployment was canceled, in which case this will point to a cancelled deployment, in either case the proxy will fallback to the fallbackDeploymentId." }, "fallbackDeploymentId": { "type": "string", "description": "This is the deployment of the fallback host at the time the commit alias was created. It is possible for this to be a deleted deployment, in which case the proxy will show that the deployment is deleted. It will not use the fallbackHost, as a future deployment on the fallback host could be invalid for this deployment, and it could lead to confusion / incorrect behavior for the commit alias." }, "fallbackHost": { "type": "string", "description": "Temporary for backwards compatibility. Can remove when metadata change is released" }, "branchAlias": { "type": "string" }, "projectId": { "type": "string", "description": "The project ID of the microfrontends application." } }, "required": [ "projectId" ], "type": "object", "description": "A list of the deployment routing information for each project." }, "type": "array", "description": "A list of the deployment routing information for each project." } ] } }, "required": [ "applications", "defaultApp" ], "type": "object", "description": "The microfrontends for the alias including the routing configuration" } }, "required": [ "alias", "created", "deploymentId", "projectId", "uid" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getAlias", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aliases.getAlias({\n from: 1540095775951,\n idOrAlias: \"example.vercel.app\",\n projectId: \"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n since: 1540095775941,\n until: 1540095775951,\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getAlias", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Aliases.GetAlias(ctx, operations.GetAliasRequest{\n From: vercel.Float64(1540095775951),\n IDOrAlias: \"example.vercel.app\",\n ProjectID: vercel.String(\"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\"),\n Since: vercel.Float64(1540095775941),\n Until: vercel.Float64(1540095775951),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteAlias", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aliases.deleteAlias({\n aliasId: \"2WjyKQmM8ZnGcJsPWMrHRHrE\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "deleteAlias", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Aliases.DeleteAlias(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/aliases/{id}/protection-bypass": { "patch": { "description": "Update the protection bypass for the alias or deployment URL (used for user access & comment access for deployments). Used as shareable links and user scoped access for Vercel Authentication and also to allow external (logged in) people to comment on previews for Preview Comments (next-live-mode).", "operationId": "patchUrlProtectionBypass", "security": [ { "bearerToken": [] } ], "summary": "Update the protection bypass for a URL", "tags": [ "aliases" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "additionalProperties": true, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "428": { "description": "" } }, "parameters": [ { "name": "id", "description": "The alias or deployment ID", "in": "path", "required": true, "schema": { "type": "string", "description": "The alias or deployment ID" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "properties": { "ttl": { "description": "Optional time the shareable link is valid for in seconds. If not provided, the shareable link will never expire.", "type": "number", "maximum": 6.3072e+07 }, "revoke": { "description": "Optional instructions for revoking and regenerating a shareable link", "type": "object", "properties": { "secret": { "description": "Sharebale link to revoked", "type": "string" }, "regenerate": { "description": "Whether or not a new shareable link should be created after the provided secret is revoked", "type": "boolean" } }, "required": [ "secret", "regenerate" ] } }, "additionalProperties": false }, { "type": "object", "properties": { "scope": { "description": "Instructions for creating a user scoped protection bypass", "type": "object", "properties": { "userId": { "type": "string", "description": "Specified user id for the scoped bypass." }, "email": { "type": "string", "format": "email", "description": "Specified email for the scoped bypass." }, "access": { "enum": [ "denied", "granted" ], "description": "Invitation status for the user scoped bypass." } }, "allOf": [ { "anyOf": [ { "required": [ "userId" ] }, { "required": [ "email" ] } ] }, { "required": [ "access" ] } ] } }, "required": [ "scope" ], "additionalProperties": false }, { "type": "object", "properties": { "override": { "type": "object", "properties": { "scope": { "enum": [ "alias-protection-override" ] }, "action": { "enum": [ "create", "revoke" ] } }, "required": [ "scope", "action" ] } }, "required": [ "override" ], "additionalProperties": false } ] } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "patchUrlProtectionBypass", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aliases.patchUrlProtectionBypass({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v8/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", "enum": [ false, true ] }, "cns": { "items": { "type": "string" }, "type": "array" } }, "required": [ "autoRenew", "cns", "createdAt", "expiresAt", "id" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "parameters": [ { "name": "id", "description": "The cert id", "in": "path", "required": true, "schema": { "description": "The cert id", "type": "string" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getCertById", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.certs.getCertById({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "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": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false }, "parameters": [ { "name": "id", "description": "The cert id to remove", "in": "path", "required": true, "schema": { "description": "The cert id to remove", "type": "string" }, "x-vercel-cli": { "kind": "argument" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "removeCert", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.certs.removeCert({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v8/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", "enum": [ false, true ] }, "cns": { "items": { "type": "string" }, "type": "array" } }, "required": [ "autoRenew", "cns", "createdAt", "expiresAt", "id" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The 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": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "issue" ], "bodyArguments": [ "cns" ] }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "cns": { "description": "The common names the cert should be issued for", "type": "array", "items": { "type": "string" } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "issueCert", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.certs.issueCert({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "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", "enum": [ false, true ] }, "cns": { "items": { "type": "string" }, "type": "array" } }, "required": [ "autoRenew", "cns", "createdAt", "expiresAt", "id" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "This feature is only available for Enterprise customers." }, "403": { "description": "You do not have permission to access this resource." } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "add" ] }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "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" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "uploadCert", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.certs.uploadCert({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v6/deployments/{id}/files": { "get": { "description": "Allows to retrieve the file structure of the source code of a deployment by supplying the deployment unique identifier. If the deployment was created with the Vercel CLI or the API directly with the `files` key, it will have a file tree that can be retrievable.", "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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listDeploymentFiles", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.deployments.listDeploymentFiles({\n id: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "listDeploymentFiles", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Deployments.ListDeploymentFiles(ctx, \"\", nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.FileTrees != nil {\n // handle response\n }\n}" } ] } }, "/v8/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": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getDeploymentFileContents", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.deployments.getDeploymentFileContents({\n id: \"\",\n fileId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/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" }, "projectId": { "type": "string", "description": "The project ID of the deployment" }, "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 }, "defaultRoute": { "type": "string", "description": "The default route that should be used for screenshots and links if configured with microfrontends.", "example": "/docs" }, "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", "enum": [ false, true ], "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", "v0-web" ], "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", null ], "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", "enum": [ false, true ] } ] }, "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", "ROLLING", "PROMOTED" ], "description": "Substate of deployment when readyState is 'READY' Tracks whether or not deployment has seen production traffic: - STAGED: never seen production traffic - ROLLING: in the process of gradually transitioning 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" }, "checks": { "properties": { "deployment-alias": { "properties": { "state": { "type": "string", "enum": [ "succeeded", "failed", "pending" ] }, "startedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "startedAt", "state" ], "type": "object", "description": "Detailed information about v2 deployment checks. Includes information about blocked workflows in the deployment lifecycle." } }, "required": [ "deployment-alias" ], "type": "object", "description": "Detailed information about v2 deployment checks. Includes information about blocked workflows in the deployment lifecycle." }, "inspectorUrl": { "nullable": true, "type": "string", "description": "Vercel URL to inspect the deployment.", "example": "https://vercel.com/acme/nextjs/J1hXN00qjUeoYfpEEf7dnDtpSiVq" }, "errorCode": { "type": "string", "description": "Error code when the deployment is in an error state.", "example": "BUILD_FAILED" }, "errorMessage": { "nullable": true, "type": "string", "description": "Error message when the deployment is in an canceled or error state.", "example": "The Deployment has been canceled because this project was not affected" }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ], "description": "Indicates if the deployment encountered an out-of-memory error.", "example": "out-of-memory" }, "isRollbackCandidate": { "nullable": true, "type": "boolean", "enum": [ false, true, null ], "description": "Deployment can be used for instant rollback" }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "manualProvisioning": { "properties": { "state": { "type": "string", "enum": [ "PENDING", "COMPLETE", "TIMEOUT" ], "description": "Current provisioning state" }, "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" } }, "required": [ "state" ], "type": "object" }, "projectSettings": { "properties": { "framework": { "nullable": true, "type": "string", "enum": [ "blitzjs", "nextjs", "gatsby", "remix", "react-router", "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", "tanstack-start", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "sanity-v3", "sanity", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "node", "go", "services", "mastra", null ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "devCommand": { "nullable": true, "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "24.x", "22.x", "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", "enum": [ false, true, null ] }, "rootDirectory": { "nullable": true, "type": "string" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "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", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object", "description": "Since June '23" } }, "type": "object", "description": "The project settings which was used for this deployment" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "The flag saying if Secure Compute network is used for builds" }, "connectConfigurationId": { "type": "string", "description": "The ID of Secure Compute network used for this deployment" }, "passiveConnectConfigurationId": { "type": "string", "description": "The ID of Secure Compute network 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" }, "platform": { "properties": { "source": { "properties": { "name": { "type": "string", "description": "Display name of the platform." } }, "required": [ "name" ], "type": "object", "description": "The external platform that created the deployment (e.g. its display name)." }, "origin": { "properties": { "type": { "type": "string", "enum": [ "url", "id" ], "description": "Whether the value is an opaque identifier or a URL." }, "value": { "type": "string", "description": "The identifier or URL pointing to the originating entity." } }, "required": [ "type", "value" ], "type": "object", "description": "Reference back to the entity on the platform that initiated the deployment." }, "creator": { "properties": { "name": { "type": "string", "description": "Display name of the platform user." }, "avatar": { "type": "string", "description": "URL of the platform user's avatar image." } }, "required": [ "name" ], "type": "object", "description": "The user on the external platform who triggered the deployment." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Arbitrary key-value metadata provided by the platform." } }, "required": [ "creator", "origin", "source" ], "type": "object", "description": "Metadata about the source platform that triggered the deployment." }, "customEnvironment": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "id" ], "type": "object", "description": "The custom environment used for this deployment, if any" }, "seatBlock": { "properties": { "blockCode": { "type": "string", "enum": [ "TEAM_ACCESS_REQUIRED", "COMMIT_AUTHOR_REQUIRED" ], "description": "The NSNB decision code for the seat block. TODO: We should consolidate block types." }, "userId": { "type": "string", "description": "The blocked vercel user ID." }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Determines if the user was verified during the block. In the git integration case, the commit sender was the author." }, "gitUserId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gitProvider": { "type": "string", "enum": [ "github", "gitlab", "bitbucket" ], "description": "The git provider type associated with gitUserId." } }, "required": [ "blockCode" ], "type": "object", "description": "NSNB Blocked metadata" }, "attribution": { "properties": { "commitMeta": { "properties": { "email": { "type": "string", "description": "Email from git commit author" }, "name": { "type": "string", "description": "Name from git commit author" }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Whether the commit was signed/verified (GitHub only, others return undefined)" } }, "type": "object", "description": "Commit metadata from the git commit author" }, "gitUser": { "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "login": { "type": "string", "description": "Git provider username/login" }, "type": { "type": "string", "description": "User type" }, "provider": { "type": "string", "description": "The git provider (github, gitlab, bitbucket)" } }, "required": [ "id", "login" ], "type": "object", "description": "Git provider user associated with the commit author email (only set if resolved)" }, "vercelUser": { "properties": { "id": { "type": "string", "description": "Vercel user ID" }, "username": { "type": "string", "description": "Vercel username" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Team roles at time of deployment" } }, "required": [ "id", "username" ], "type": "object", "description": "Vercel user linked to the git provider account (only set if resolved)" } }, "type": "object", "description": "Commit attribution metadata" } }, "required": [ "created", "creator", "inspectorUrl", "name", "projectId", "type", "uid", "url" ], "type": "object" }, "type": "array" } }, "required": [ "deployments", "pagination" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "422": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "ls", "list" ] }, "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": "projectIds", "description": "Filter deployments from the given project IDs. Cannot be used when projectId is specified.", "in": "query", "schema": { "description": "Filter deployments from the given project IDs. Cannot be used when projectId is specified.", "type": "array", "items": { "type": "string" }, "example": [ "prj_123", "prj_456" ], "minItems": 1, "maxItems": 20 } }, { "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" } }, { "name": "branch", "description": "Filter deployments based on the branch name", "in": "query", "schema": { "description": "Filter deployments based on the branch name", "type": "string" } }, { "name": "sha", "description": "Filter deployments based on the SHA", "in": "query", "schema": { "description": "Filter deployments based on the SHA", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-speakeasy-usage-example": { "title": "List deployments", "description": "List deployments under the authenticated user or team.", "position": 1 }, "x-codeSamples": [ { "lang": "typescript", "label": "getDeployments", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.deployments.getDeployments({\n app: \"docs\",\n from: 1612948664566,\n limit: 10,\n projectId: \"QmXGTs7mvAMMC7WW5ebrM33qKG32QK3h4vmQMjmY\",\n projectIds: [\n \"prj_123\",\n \"prj_456\",\n ],\n target: \"production\",\n to: 1612948664566,\n users: \"kr1PsOIzqEL5Xg6M4VZcZosf,K4amb7K9dAt5R2vBJWF32bmY\",\n since: 1540095775941,\n until: 1540095775951,\n state: \"BUILDING,READY\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "getDeployments", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"github.com/vercel/vercel/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Deployments.GetDeployments(ctx, operations.GetDeploymentsRequest{\n App: vercel.String(\"docs\"),\n From: vercel.Float64(1612948664566),\n Limit: vercel.Float64(10),\n ProjectID: vercel.String(\"QmXGTs7mvAMMC7WW5ebrM33qKG32QK3h4vmQMjmY\"),\n Target: vercel.String(\"production\"),\n To: vercel.Float64(1612948664566),\n Users: vercel.String(\"kr1PsOIzqEL5Xg6M4VZcZosf,K4amb7K9dAt5R2vBJWF32bmY\"),\n Since: vercel.Float64(1540095775941),\n Until: vercel.Float64(1540095775951),\n State: vercel.String(\"BUILDING,READY\"),\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } }, "/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": [ "state", "uid" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "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", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteDeployment", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.deployments.deleteDeployment({\n id: \"dpl_5WJWYSyB7BpgTj3EuwF37WMRBXBtPQ2iTMJHJBJyRfd\",\n url: \"https://files-orcin-xi.vercel.app/\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" }, { "lang": "go", "label": "deleteDeployment", "source": "package main\n\nimport(\n\t\"os\"\n\t\"github.com/vercel/vercel\"\n\t\"context\"\n\t\"log\"\n)\n\nfunc main() {\n s := vercel.New(\n vercel.WithSecurity(os.Getenv(\"VERCEL_BEARER_TOKEN\")),\n )\n\n ctx := context.Background()\n res, err := s.Deployments.DeleteDeployment(ctx, \"dpl_5WJWYSyB7BpgTj3EuwF37WMRBXBtPQ2iTMJHJBJyRfd\", vercel.String(\"https://files-orcin-xi.vercel.app/\"), nil, nil)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" } ] } } }, "components": { "schemas": { "Network": { "properties": { "awsAccountId": { "type": "string", "description": "The ID of the AWS Account in which the network exists." }, "awsAvailabilityZoneIds": { "items": { "type": "string" }, "type": "array", "description": "The IDs of the AWS Availability Zones in which the network exists, if specified during creation." }, "awsRegion": { "type": "string", "description": "The AWS Region in which the network exists." }, "cidr": { "type": "string", "description": "The CIDR range of the Network." }, "createdAt": { "type": "number", "description": "The date at which the Network was created, represented as a UNIX timestamp since EPOCH." }, "egressIpAddresses": { "items": { "type": "string" }, "type": "array" }, "hostedZones": { "properties": { "count": { "type": "number", "description": "The number of AWS Route53 Hosted Zones associated with the Network." } }, "required": [ "count" ], "type": "object", "description": "Metadata about any AWS Route53 Hosted Zones associated with the Network." }, "id": { "type": "string", "description": "The unique identifier of the Network." }, "name": { "type": "string", "description": "The name of the network." }, "peeringConnections": { "properties": { "count": { "type": "number", "description": "The number of AWS Route53 Hosted Zones associated with the Network." } }, "required": [ "count" ], "type": "object", "description": "Metadata about any AWS Route53 Hosted Zones associated with the Network." }, "projects": { "properties": { "count": { "type": "number" }, "ids": { "items": { "type": "string" }, "type": "array" } }, "required": [ "count", "ids" ], "type": "object", "description": "Metadata about any projects associated with the Network." }, "region": { "type": "string", "description": "The Vercel region in which the Network exists." }, "status": { "type": "string", "enum": [ "create_in_progress", "delete_in_progress", "error", "ready" ], "description": "The status of the Network." }, "teamId": { "type": "string", "description": "The unique identifier of the Team that owns the Network." }, "vpcId": { "type": "string", "description": "The ID of the VPC which hosts the network." } }, "required": [ "awsAccountId", "awsRegion", "cidr", "createdAt", "id", "name", "status", "teamId" ], "type": "object" }, "FlagJSONValue": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "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" }, { "type": "boolean", "enum": [ false, true ] } ] }, "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." }, "TldName": { "type": "string", "description": "A valid TLD name" }, "HttpApiDecodeError": { "type": "object", "required": [ "issues", "message" ], "properties": { "issues": { "type": "array", "items": { "$ref": "#/components/schemas/Issue" } }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The request did not match the expected schema" }, "Issue": { "type": "object", "required": [ "path", "message" ], "properties": { "path": { "type": "array", "items": { "$ref": "#/components/schemas/PropertyKey" }, "description": "The path to the property where the issue occurred" }, "message": { "type": "string", "description": "A descriptive message explaining the issue" } }, "additionalProperties": false, "description": "Represents an error encountered while parsing a value to match the schema" }, "PropertyKey": { "anyOf": [ { "type": "string" }, { "type": "number" }, { "type": "object", "required": [ "_tag", "key" ], "properties": { "_tag": { "type": "string", "enum": [ "symbol" ] }, "key": { "type": "string" } }, "additionalProperties": false, "description": "an object to be decoded into a globally shared symbol" } ] }, "TooManyRequests": { "type": "object", "required": [ "status", "code", "message", "retryAfter", "limit" ], "properties": { "status": { "type": "number", "enum": [ 429 ] }, "code": { "type": "string", "enum": [ "too_many_requests" ] }, "message": { "type": "string" }, "retryAfter": { "type": "object", "required": [ "value", "str" ], "properties": { "value": { "type": "number" }, "str": { "type": "string" } }, "additionalProperties": false }, "limit": { "type": "object", "required": [ "total", "remaining", "reset" ], "properties": { "total": { "type": "number" }, "remaining": { "type": "number" }, "reset": { "type": "number" } }, "additionalProperties": false } }, "additionalProperties": false }, "Unauthorized": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 401 ] }, "code": { "type": "string", "enum": [ "unauthorized" ] }, "message": { "type": "string" } }, "additionalProperties": false }, "NotAuthorizedForScope": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 403 ] }, "code": { "type": "string", "enum": [ "not_authorized_for_scope" ] }, "message": { "type": "string" } }, "additionalProperties": false }, "InternalServerError": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 500 ] }, "code": { "type": "string", "enum": [ "internal_server_error" ] }, "message": { "type": "string" } }, "additionalProperties": false }, "TldNotSupported": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "tld_not_supported" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The TLD is not currently supported." }, "DomainName": { "type": "string", "description": "A valid domain name" }, "NotFound": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 404 ] }, "code": { "type": "string", "enum": [ "not_found" ] }, "message": { "type": "string" } }, "additionalProperties": false }, "DomainTooShort": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "domain_too_short" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The domain name (excluding the TLD) is too short." }, "BadRequest": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "bad_request" ] }, "message": { "type": "string" } }, "additionalProperties": false }, "DomainNotRegistered": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "domain_not_registered" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The domain is not registered with Vercel." }, "Forbidden": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 403 ] }, "code": { "type": "string", "enum": [ "forbidden" ] }, "message": { "type": "string" } }, "additionalProperties": false }, "DomainNotFound": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 404 ] }, "code": { "type": "string", "enum": [ "domain_not_found" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The domain was not found in our system." }, "DomainCannotBeTransferedOutUntil": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 409 ] }, "code": { "type": "string", "enum": [ "domain_cannot_be_transfered_out_until" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The domain cannot be transfered out until the specified date." }, "NonEmptyTrimmedString": { "type": "string", "description": "a non empty string", "title": "nonEmptyString", "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", "minLength": 1 }, "EmailAddress": { "type": "string", "description": "A valid RFC 5322 email address", "title": "nonEmptyString", "minLength": 1 }, "E164PhoneNumber": { "type": "string", "description": "A valid E.164 phone number", "title": "nonEmptyString", "minLength": 1, "pattern": "^(?=(?:\\D*\\d){8,15}$)\\+[1-9]\\d{0,2}\\.?\\d+$" }, "CountryCode": { "type": "string", "description": "A valid ISO 3166-1 alpha-2 country code" }, "OrderId": { "type": "string", "description": "A valid order ID" }, "LanguageCodeRequired": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "language_code_required" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "A language code is required for punycode domains." }, "DomainNotAvailable": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "domain_not_available" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The domain is not available." }, "ExpectedPriceMismatch": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "expected_price_mismatch" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The expected price passed does not match the actual price." }, "AdditionalContactInfoRequired": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "additional_contact_info_required" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "Additional contact information is required for the TLD." }, "InvalidAdditionalContactInfo": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "invalid_additional_contact_info" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "Additional contact information provided for the TLD is invalid." }, "OrderTooExpensive": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "order_too_expensive" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The total price of the order is too high." }, "DuplicateDomains": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "duplicate_domains" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "Duplicate domains were provided." }, "TooManyDomains": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "too_many_domains" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The number of domains in the order is too high." }, "DNSSECEnabled": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "dnssec_enabled" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The operation cannot be completed because DNSSEC is enabled for the domain." }, "DomainAlreadyOwned": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "domain_already_owned" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The domain is already owned by another team or user." }, "DomainNotRenewable": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "domain_not_renewable" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The domain is not renewable." }, "DomainAlreadyRenewing": { "type": "object", "required": [ "status", "code", "message" ], "properties": { "status": { "type": "number", "enum": [ 400 ] }, "code": { "type": "string", "enum": [ "domain_already_renewing" ] }, "message": { "type": "string" } }, "additionalProperties": false, "description": "The domain is already renewing." }, "Nameserver": { "type": "string", "description": "A valid nameserver" }, "RegistrantField": { "anyOf": [ { "type": "object", "required": [ "description", "required", "type" ], "properties": { "description": { "type": "string" }, "required": { "type": "boolean" }, "label": { "type": "string" }, "validation": { "type": "string" }, "required_when": { "anyOf": [ { "type": "string" }, { "type": "object", "required": [ "value_in" ], "properties": { "value_in": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ] }, "type": { "type": "string", "enum": [ "string" ] }, "options": { "type": "array", "items": { "type": "object", "required": [ "value", "label" ], "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "fields": { "type": "object", "properties": {} } }, "additionalProperties": false } }, "fields": { "type": "object", "properties": {} } }, "additionalProperties": false }, { "type": "object", "required": [ "description", "required", "type", "options" ], "properties": { "description": { "type": "string" }, "required": { "type": "boolean" }, "label": { "type": "string" }, "validation": { "type": "string" }, "required_when": { "anyOf": [ { "type": "string" }, { "type": "object", "required": [ "value_in" ], "properties": { "value_in": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ] }, "type": { "type": "string", "enum": [ "enum" ] }, "options": { "type": "array", "items": { "type": "object", "required": [ "value", "label" ], "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "fields": { "type": "object", "properties": {} } }, "additionalProperties": false } }, "fields": { "type": "object", "properties": {} } }, "additionalProperties": false }, { "type": "object", "required": [ "description", "required", "type" ], "properties": { "description": { "type": "string" }, "required": { "type": "boolean" }, "label": { "type": "string" }, "validation": { "type": "string" }, "required_when": { "anyOf": [ { "type": "string" }, { "type": "object", "required": [ "value_in" ], "properties": { "value_in": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ] }, "type": { "type": "string", "enum": [ "acknowledgement" ] }, "value": { "type": "string" } }, "additionalProperties": false }, { "type": "object", "required": [ "description", "required", "type" ], "properties": { "description": { "type": "string" }, "required": { "type": "boolean" }, "label": { "type": "string" }, "validation": { "type": "string" }, "required_when": { "anyOf": [ { "type": "string" }, { "type": "object", "required": [ "value_in" ], "properties": { "value_in": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ] }, "type": { "type": "string", "enum": [ "notice" ] } }, "additionalProperties": false } ], "description": "Schema definition for registrant fields." }, "EdgeConfigItemValue": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "additionalProperties": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "type": "object" }, { "items": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "type": "array" }, { "type": "boolean", "enum": [ false, true ] } ] }, "EdgeConfigItem": { "properties": { "key": { "type": "string" }, "value": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "description": { "type": "string" }, "edgeConfigId": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "createdAt", "edgeConfigId", "key", "updatedAt", "value" ], "type": "object", "description": "The EdgeConfig." }, "EdgeConfigToken": { "properties": { "partialToken": { "type": "string", "description": "A partially-masked representation of the token, safe to display in UIs. The format is the first 3 characters of the token followed by a fixed 8-character `*` mask (e.g. `550e8400-e29b-41d4-a716-446655440000` → `550********`). The mask length is intentionally fixed (not proportional to the original token length) to avoid leaking the token length. Prefer this field for display/reference in UIs and logs. The full, plaintext token is only disclosed once at creation time via `POST /v1/edge-config/:edgeConfigId/token`; use `id` to reference a token in subsequent calls (e.g. when deleting)." }, "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" }, "token": { "type": "string", "description": "Deprecated: the full, plaintext token. - Returned once by `POST /v1/edge-config/:edgeConfigId/token` (create). - Still returned by `GET /v1/edge-config/:edgeConfigId/token/:token` (detail) for backwards compatibility, but scheduled for removal. - **Not** returned by `GET /v1/edge-config/:edgeConfigId/tokens` (list); use `partialToken` for display and `id` to reference tokens. Do not rely on this field being present on read operations. Prefer `partialToken` for display and `id` for references." } }, "required": [ "createdAt", "edgeConfigId", "id", "label", "partialToken" ], "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": [ "app", "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" ], "example": "author", "description": "The type of entity." }, "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": [ "end", "start", "type" ], "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." }, "type": { "type": "string", "enum": [ "team", "avatar", "alias", "plan", "flag", "deployment", "ai-gateway-api-key-created", "ai-gateway-api-key-deleted", "ai-gateway-byok-credential-created", "ai-gateway-byok-credential-deleted", "ai-gateway-byok-credential-updated", "access-group-created", "access-group-deleted", "access-group-project-updated", "access-group-updated", "access-group-user-added", "access-group-user-removed", "password-protection-disabled", "password-protection-enabled", "aliases-assigned", "alias-chown", "alias-delete", "alias-invite-created", "alias-invite-joined", "alias-invite-revoked", "alias-protection-bypass-created", "alias-protection-bypass-exception", "alias-protection-bypass-regenerated", "alias-protection-bypass-revoked", "alias-system", "alias-user-scoped-access-denied", "alias-user-scoped-access-granted", "alias-user-scoped-access-requested", "alias-user-scoped-access-revoked", "oauth-app-connection-created", "oauth-app-connection-removed", "oauth-app-connection-updated", "oauth-app-created", "oauth-app-deleted", "vercel-app-installation-request-dismissed", "vercel-app-installation-requested", "vercel-app-installation-updated", "vercel-app-installed", "oauth-app-secret-deleted", "oauth-app-secret-generated", "oauth-app-token-created", "vercel-app-tokens-revoked", "vercel-app-uninstalled", "oauth-app-updated", "attack-mode-disabled", "attack-mode-enabled", "auto-expose-system-envs", "invoice-refunded", "invoice-modified", "payment-method-added", "payment-method-default-updated", "payment-method-removed", "subscription-created", "subscription-updated", "subscription-product-added", "subscription-product-removed", "bulk-redirects-settings-updated", "bulk-redirects-version-promoted", "bulk-redirects-version-restored", "cert", "cert-system-create", "cert-autorenew", "cert-chown", "cert-clone", "cert-delete", "cert-renew", "cert-replace", "connect-configuration-created", "connect-configuration-deleted", "connect-configuration-link-updated", "connect-configuration-linked", "connect-configuration-unlinked", "connect-configuration-updated", "connect-github", "disconnect-github", "connect-github-limited", "disconnect-github-limited", "connect-github-custom-host", "disconnect-github-custom-host", "connect-gitlab", "connect-gitlab-app", "disconnect-gitlab-app", "connect-bitbucket", "connect-bitbucket-app", "disconnect-bitbucket-app", "custom-suffix-clear", "custom-suffix-disable", "preview-deployment-suffix-disabled", "custom-suffix-enable", "preview-deployment-suffix-enabled", "custom-suffix-pending", "custom-suffix-ready", "deploy-hook-created", "deploy-hook-deleted", "deploy-hook-deduped", "deploy-hook-processed", "deployment-check-created", "deployment-check-updated", "deployment-check-deleted", "authorize-git-deployment", "deployment-chown", "deployment-creation-blocked", "deployment-delete", "disabled-integration-installation-removed", "dns-add", "dns-delete", "dns-update", "domain", "domain-buy", "domain-cdn", "domain-chown", "domain-delegated", "domain-delete", "domain-service-type-updated", "domain-custom-ns-change", "dns-zonefile-import", "domain-zone-change", "domain-move-in", "domain-move-out", "domain-move-out-request-sent", "domain-renew-change", "domain-transfer-in", "domain-transfer-in-canceled", "domain-transfer-in-completed", "drain-created", "drain-deleted", "drain-disabled", "drain-enabled", "drain-updated", "edge-cache-dangerously-delete-by-src-images", "edge-cache-dangerously-delete-by-tags", "edge-cache-invalidate-by-src-images", "edge-cache-invalidate-by-tags", "edge-cache-purge-all", "edge-cache-rollback-purge", "edge-config-created", "edge-config-deleted", "edge-config-items-updated", "edge-config-schema-deleted", "edge-config-schema-updated", "edge-config-transfer-in", "edge-config-transfer-out", "edge-config-token-created", "edge-config-token-deleted", "edge-config-updated", "email", "email-notification-rule-removed", "email-notification-rule-updated", "env-variable-add", "env-variable-delete", "env-variable-edit", "env-variable-read", "env-variable-read:cli:dev", "env-variable-read:cli:env:add", "env-variable-read:cli:env:ls", "env-variable-read:cli:env:pull", "env-variable-read:cli:env:rm", "env-variable-read:cli:pull", "env-variable-read:unknown-source", "env-variable-read:v0:env:pull", "env-variable-rotated", "shared-env-variable-create", "shared-env-variable-delete", "shared-env-variable-read", "shared-env-variable-update", "firewall-bypass-created", "firewall-bypass-deleted", "firewall-config-modified", "firewall-config-promoted", "firewall-config-removed", "firewall-managed-rulegroup-updated", "firewall-managed-ruleset-updated", "flags-segment", "flags-settings", "flag-created", "flag-updated", "flag-deleted", "flag-archived", "flag-unarchived", "flags-explorer-subscription", "flags-sdk-key", "flags-sdk-key-added", "flags-sdk-key-deleted", "flags-sdk-key-read", "instant-rollback-created", "integration-configuration-owner-changed", "integration-configuration-scope-change-confirmed", "integration-configurations-disabled", "integration-installation-billing-plan-updated", "integration-installation-completed", "integration-installation-permission-updated", "integration-installation-removed", "integration-scope-changed", "log-drain-created", "log-drain-deleted", "log-drain-disabled", "log-drain-enabled", "login", "manual-deployment-promotion-created", "microfrontend-group-added", "microfrontend-group-deleted", "microfrontend-group-updated", "microfrontend-project-added-to-group", "microfrontend-project-removed-from-group", "microfrontend-project-updated", "monitoring-disabled", "monitoring-enabled", "observability-disabled", "observability-enabled", "observability-plus-project-disabled", "observability-plus-project-enabled", "owner-blocked", "owner-unblocked", "owner-soft-blocked", "owner-soft-unblocked", "page-integrity-config-updated", "page-integrity-header-approved", "page-integrity-resource-approved", "page-integrity-resource-deleted", "page-integrity-resource-rejected", "passkey-created", "passkey-deleted", "passkey-updated", "preview-deployment-suffix-update", "privatelink-endpoint-created", "privatelink-endpoint-deleted", "privatelink-endpoint-updated", "production-branch-updated", "project-directory-listing", "project-analytics-disabled", "project-speed-insights-disabled", "project-analytics-enabled", "project-speed-insights-enabled", "project-automation-bypass", "project-affected-projects-deployments-updated", "project-external-rewrite-caching-updated", "project-build-command-updated", "project-framework-updated", "project-install-command-updated", "project-node-version-updated", "project-output-directory-updated", "project-prioritize-production-builds-updated", "project-root-directory-updated", "project-source-files-outside-root-directory-updated", "project-build-machine-updated", "project-client-cert-delete", "project-client-cert-upload", "project-connect-configurations", "project-created", "project-cron-jobs-toggled", "project-delegated-protection-enabled", "project-delegated-protection-updated", "project-delegated-protection-disabled", "project-delete", "project-domain-unverified", "project-domain-verified", "project-elastic-concurrency-updated", "project-auto-assign-custom-production-domains-updated", "project-preview-environment-branch-tracking-updated", "project-custom-environment-updated", "project-custom-environment-created", "project-custom-environment-deleted", "project-functions-beta-updated", "project-functions-fluid-disabled", "project-functions-fluid-enabled", "project-function-max-duration", "project-function-cpu-memory", "project-function-regions", "project-function-failover", "project-preview-deployment-suffix", "project-name", "project-git-repository-connected", "project-git-repository-disconnected", "project-git-pr-comments-toggled", "project-git-commit-comments-toggled", "project-git-repository-dispatch-events-toggled", "project-git-create-deployments-toggled", "project-git-require-verified-commits-toggled", "team-git-require-verified-commits-toggled", "project-git-commit-status-toggled", "project-git-lfs-toggled", "project-consolidated-git-commit-status-updated", "project-ignored-build-step-updated", "project-add-alias", "project-add-redirect", "project-domain-deleted", "project-domain-moved", "project-domain-updated", "project-member-removed-batch", "project-alias-configured-change", "project-member-added", "project-member-invited", "project-member-removed", "project-member-updated", "project-move-in-success", "project-move-out-failed", "project-move-out-started", "project-move-out-success", "project-oidc-token-created", "project-options-allowlist", "project-password-protection", "project-paused", "project-program-enrollment-changed", "project-rolling-release-enabled", "project-rolling-release-disabled", "project-rolling-release-configured", "project-rolling-release-started", "project-rolling-release-completed", "project-rolling-release-aborted", "project-rolling-release-approved", "project-rolling-release-timer", "project-rolling-release-paused", "project-rolling-release-continued", "project-rolling-release-suggested-actions-generated", "project-routes-version-promoted", "project-routes-version-restored", "project-oidc-issuer-mode-updated", "project-customer-success-code-visibility-updated", "project-git-fork-protection-updated", "project-protected-sourcemaps-updated", "project-build-logs-and-source-protection-updated", "project-deployment-retention-updated", "project-skew-protection-threshold-updated", "project-skew-protection-max-age-updated", "project-skew-protection-allowed-domains-updated", "project-sso-protection", "project-static-ips-updated", "project-trusted-ips", "project-trusted-sources", "project-unpaused", "project-web-analytics-disabled", "project-web-analytics-enabled", "protected-git-scope-added", "protected-git-scope-removed", "runtime-cache-purge-all", "scale", "scale-auto", "secondary-email-added", "secondary-email-removed", "secondary-email-verified", "secret-add", "secret-delete", "secret-rename", "security-plus-updated", "set-bio", "set-name", "set-profiles", "set-scale", "signup", "signup-via-bitbucket", "signup-via-github", "signup-via-gitlab", "speed-insights-settings-updated", "spend-created", "spend-deleted", "spend-updated", "storage-accept-tos", "storage-transfer-request-created", "storage-transfer-out-success", "storage-transfer-in-success", "storage-create", "storage-reset-credentials", "storage-update", "storage-connect-project", "storage-disconnect-project", "storage-update-project-connection", "storage-upgrade-project-connection-to-oidc", "storage-delete", "storage-accessed-data-browser", "storage-view-secret", "storage-inactive-store-deleted", "storage-resource-repl-command", "storage-disconnect-projects", "storage-access-token-set", "storage-set-locked", "ai-code-review", "ai-alert-investigation", "vercel-agent-team-trial-credits-applied", "team-avatar-update", "team-default-build-machine-updated", "team-delete", "strict-deployment-protection-settings", "strict-shareable-links", "team-domain-verification-created", "team-domain-verification-deleted", "team-domain-verification-verified", "team-emu-updated", "vercel-toolbar", "team-email-domain-update", "team-invite-bulk-delete", "team-member-add", "team-member-confirm-request", "team-member-decline-request", "team-member-delete", "team-member-entitlement-added", "team-member-entitlement-canceled", "team-member-entitlement-reactivated", "team-member-entitlement-removed", "team-member-join", "team-member-leave", "team-member-request-access", "team-member-role-update", "team-mfa-enforcement-updated", "team-invite-link-created", "team-invite-link-deleted", "concurrent-builds-update", "team-ended-trial", "team-paid-invoice", "team-invite-code-reset", "team-name-update", "team-program-enrollment-changed", "team-remote-caching-update", "enforce-sensitive-environment-variables", "show-ip-addresses", "team-saml-enforced", "team-saml-roles", "team-ip-blocking-rules-created", "team-ip-blocking-rules-removed", "team-tokens-invalidated", "audit-log-export-requested", "audit-log-export-downloaded", "team-slug-update", "unlink-login-connection", "user-mfa-removed", "user-delete", "user-mfa-challenge-verified", "user-mfa-configuration-updated", "user-mfa-recovery-codes-regenerated", "user-mfa-totp-verification-started", "user-mfa-totp-verified", "user-primary-email-updated", "user-token-created", "username", "alert-rule-created", "alert-rule-updated", "alert-rule-deleted", "vulnerability-banner-dismissed", "vpc-peering-connection-accepted", "vpc-peering-connection-deleted", "vpc-peering-connection-rejected", "vpc-peering-connection-updated", "web-analytics-tier-updated", "webhook-created", "webhook-deleted", "webhook-updated", "v0-chat-created", "v0-chat-ai-usage", "v0-chat-message-sent", "workflow-deployment-key-accessed" ], "description": "The type of the event.", "example": "login" }, "categories": { "items": { "type": "string", "enum": [ "account", "ai", "ai-gateway", "billing", "deployment", "domain", "edge", "env-variable", "feature-flags", "firewall", "integration", "microfrontends", "network", "observability", "project", "security", "storage", "team", "v0", "vercel-app", "workflow", "other" ], "example": [ "deployment" ], "description": "The categories that group this event with related event types. An event can belong to multiple categories (e.g. a firewall event is both Firewall and Security). The first entry is the \"primary\" category. Use the `/events/types` endpoint to discover the full list of categories." }, "type": "array", "description": "The categories that group this event with related event types. An event can belong to multiple categories (e.g. a firewall event is both Firewall and Security). The first entry is the \"primary\" category. Use the `/events/types` endpoint to discover the full list of categories.", "example": [ "deployment" ] }, "createdAt": { "type": "number", "description": "Timestamp (in milliseconds) of when the event was generated.", "example": 1632859321020 }, "user": { "properties": { "slug": { "type": "string" }, "avatar": { "type": "string" }, "email": { "type": "string" }, "username": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "avatar", "email", "uid", "username" ], "type": "object", "description": "Metadata for {@link userId}." }, "principal": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "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 {@link principalId}." }, { "properties": { "type": { "type": "string", "enum": [ "app" ] }, "clientId": { "type": "string" }, "name": { "type": "string" } }, "required": [ "clientId", "name", "type" ], "type": "object", "description": "Metadata for {@link principalId}." }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object", "description": "Metadata for {@link principalId}." } ] }, "via": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "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 {@link viaIds}." }, { "properties": { "type": { "type": "string", "enum": [ "app" ] }, "clientId": { "type": "string" }, "name": { "type": "string" } }, "required": [ "clientId", "name", "type" ], "type": "object", "description": "Metadata for {@link viaIds}." }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object", "description": "Metadata for {@link viaIds}." } ] }, "type": "array", "description": "Metadata for {@link viaIds}." }, "userId": { "type": "string", "description": "When the principal who generated the event is a user, this is their ID; otherwise, it is empty.", "example": "zTuNVUXEAvvnNN3IaqinkyMw" }, "principalId": { "type": "string", "description": "The ID of the principal who generated the event. The principal is typically a user, but it could also be an app, an integration, etc. The principal may have delegated its authority to an acting party, and so {@link viaIds} should be checked as well." }, "viaIds": { "items": { "type": "string" }, "type": "array", "description": "If the principal delegated its authority (for example, a user delegating to an app), then this array contains the ID of the current actor. For example, if `principalId` is \"user123\" and `viaIds` is `[\"app456\"]`, we can say the event was triggered by - \"app456 on behalf of user123\", or - \"user123 via app4556\". Both are equivalent. Arbitrarily long chains of delegation can be represented. For example, if `principalId` is \"user123\" and `viaIds` is `[\"service1\", \"service2\"]`, we can say the event was triggered by \"user123 via service1 via service2\"." }, "payload": { "oneOf": [ { "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "action": { "type": "string", "enum": [ "deleted", "created", "updated", "archived", "unarchived" ] }, "id": { "type": "string" }, "slug": { "type": "string" }, "projectId": { "type": "string" }, "projectName": { "type": "string" } }, "required": [ "action", "id", "projectId", "slug" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "action": { "type": "string", "enum": [ "deleted", "added", "rotated" ] }, "label": { "type": "string" }, "projectName": { "type": "string" }, "projectId": { "type": "string" }, "environment": { "type": "string" } }, "required": [ "action", "environment" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "action": { "type": "string", "enum": [ "read" ] }, "projectName": { "type": "string" }, "projectId": { "type": "string" }, "environment": { "items": { "type": "string" }, "type": "array" } }, "required": [ "action", "environment" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "apiKey": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" } }, "required": [ "apiKey" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "credential": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "providerSlug": { "type": "string" } }, "required": [ "id", "name", "providerSlug" ], "type": "object" } }, "required": [ "credential" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "accessGroup": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "teamRoles": { "items": { "type": "string" }, "type": "array" }, "teamPermissions": { "items": { "type": "string" }, "type": "array" }, "entitlements": { "items": { "type": "string" }, "type": "array" } }, "required": [ "accessGroup" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "author": { "type": "string" }, "accessGroup": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" } }, "required": [ "accessGroup", "author" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "accessGroup": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "next_role": { "nullable": true, "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST", null ] }, "previous_role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ] } }, "required": [ "accessGroup", "project" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "accessGroup": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "name": { "type": "string" }, "previousName": { "type": "string" }, "teamRoles": { "items": { "type": "string" }, "type": "array" }, "previousTeamRoles": { "items": { "type": "string" }, "type": "array" }, "teamPermissions": { "items": { "type": "string" }, "type": "array" }, "previousTeamPermissions": { "items": { "type": "string" }, "type": "array" }, "entitlementsAdded": { "items": { "type": "string" }, "type": "array" }, "entitlementsRemoved": { "items": { "type": "string" }, "type": "array" } }, "required": [ "accessGroup" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "accessGroup": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "user": { "properties": { "id": { "type": "string" }, "username": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "directoryType": { "type": "string" } }, "required": [ "accessGroup", "user" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "price": { "type": "number" }, "currency": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "alias": { "type": "string" }, "deployment": { "nullable": true, "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "url": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "readyState": { "type": "string" }, "allowListedReadyStateReasonInternal": { "type": "string", "enum": [ "EARLY_IGNORE_STEP", "IGNORE_STEP", "NAMESPACE_PRUNED", "UNAFFECTED_PROJECT", "UNVERIFIED_COMMIT" ], "description": "A narrowed subset of the deployment's `readyStateReasonInternal` — only values in the public allowlist are permitted here. Callers should run their raw reason through `toAllowListedReadyStateReasonInternal` from `@api/events` before assigning. This keeps abuse / moderation / admin reasons out of the public activity log." } }, "required": [ "id", "meta", "name", "url" ], "type": "object" }, "ruleCount": { "type": "number" }, "deploymentUrl": { "type": "string" }, "aliasId": { "type": "string" }, "deploymentId": { "nullable": true, "type": "string" }, "oldDeploymentId": { "nullable": true, "type": "string" }, "redirect": { "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number" }, "target": { "nullable": true, "type": "string" }, "system": { "type": "boolean", "enum": [ false, true ] }, "aliasUpdatedAt": { "type": "number" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "aliasCount": { "type": "number" }, "deployment": { "nullable": true, "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "url": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "readyState": { "type": "string" }, "allowListedReadyStateReasonInternal": { "type": "string", "enum": [ "EARLY_IGNORE_STEP", "IGNORE_STEP", "NAMESPACE_PRUNED", "UNAFFECTED_PROJECT", "UNVERIFIED_COMMIT" ], "description": "A narrowed subset of the deployment's `readyStateReasonInternal` — only values in the public allowlist are permitted here. Callers should run their raw reason through `toAllowListedReadyStateReasonInternal` from `@api/events` before assigning. This keeps abuse / moderation / admin reasons out of the public activity log." } }, "required": [ "id", "meta", "name", "url" ], "type": "object" } }, "required": [ "aliasCount", "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "alias": { "type": "string" }, "oldTeam": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "newTeam": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" } }, "required": [ "alias" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "alias": { "type": "string" }, "aliasId": { "type": "string" }, "deploymentId": { "nullable": true, "type": "string" } }, "required": [ "alias", "aliasId", "deploymentId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "alias": { "type": "string" }, "email": { "type": "string" }, "username": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "alias": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "alias": { "type": "string" }, "email": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "aliasId": { "type": "string" }, "alias": { "type": "string" }, "projectName": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectName": { "type": "string" }, "alias": { "type": "string" }, "action": { "type": "string", "enum": [ "created", "removed" ] } }, "required": [ "action", "alias", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "alias": { "type": "string" }, "deploymentUrl": { "type": "string" } }, "required": [ "alias", "deploymentUrl" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "alias": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "alias": { "type": "string" }, "aliasId": { "type": "string" }, "userId": { "type": "string" }, "username": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "appName": { "type": "string" }, "appId": { "type": "string" }, "scopes": { "items": { "type": "string", "enum": [ "openid", "email", "profile", "offline_access" ] }, "type": "array" }, "permissions": { "items": { "type": "string", "enum": [ "*", "read:user", "read:domain", "read-write:domain", "read:team", "read:billing", "read-write:billing", "read-write:ai-gateway-api-key", "use:ai-gateway", "read-write:project-env-vars", "read-write:drains", "read-write:edge-config", "read:monitoring", "read:access-group", "read:integration-configuration", "read-write:integration-configuration", "read-write:integration-resource", "read-write:blob", "read:event", "read-write:remote-cache", "read:project", "read-write:project", "read:deployment", "read-write:deployment", "read-write:edge-cache", "read-write:project-protection-bypass", "read:project-env-vars-non-production", "read-write:project-env-vars-non-production", "read:project-env-vars-production", "read-write:project-env-vars-production", "read-write:project-flags-non-production", "read-write:project-flags-production", "read-write:domain-registrar", "read:sandbox", "read-write:sandbox" ] }, "type": "array" } }, "required": [ "appName", "scopes" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "appName": { "type": "string" }, "appId": { "type": "string" } }, "required": [ "appName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "appName": { "type": "string" }, "appId": { "type": "string" }, "nextScopes": { "items": { "type": "string", "enum": [ "openid", "email", "profile", "offline_access" ] }, "type": "array" }, "nextPermissions": { "items": { "type": "string", "enum": [ "*", "read:user", "read:domain", "read-write:domain", "read:team", "read:billing", "read-write:billing", "read-write:ai-gateway-api-key", "use:ai-gateway", "read-write:project-env-vars", "read-write:drains", "read-write:edge-config", "read:monitoring", "read:access-group", "read:integration-configuration", "read-write:integration-configuration", "read-write:integration-resource", "read-write:blob", "read:event", "read-write:remote-cache", "read:project", "read-write:project", "read:deployment", "read-write:deployment", "read-write:edge-cache", "read-write:project-protection-bypass", "read:project-env-vars-non-production", "read-write:project-env-vars-non-production", "read:project-env-vars-production", "read-write:project-env-vars-production", "read-write:project-flags-non-production", "read-write:project-flags-production", "read-write:domain-registrar", "read:sandbox", "read-write:sandbox" ] }, "type": "array" } }, "required": [ "appName", "nextScopes" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "appName": { "type": "string" }, "appId": { "type": "string" }, "installationId": { "type": "string" }, "before": { "properties": { "resources": { "properties": { "projectIds": { "properties": { "type": { "type": "string", "enum": [ "list" ] }, "required": { "type": "boolean", "enum": [ true ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "string" ] } }, "required": [ "type" ], "type": "object" } }, "required": [ "items", "required", "type" ], "type": "object" } }, "required": [ "projectIds" ], "type": "object" }, "permissions": { "items": { "type": "string", "enum": [ "read:domain", "read-write:domain", "read:team", "read:billing", "read-write:billing", "read-write:ai-gateway-api-key", "use:ai-gateway", "read-write:project-env-vars", "read-write:drains", "read-write:edge-config", "read:monitoring", "read:access-group", "read:integration-configuration", "read-write:integration-configuration", "read-write:integration-resource", "read-write:blob", "read:event", "read-write:remote-cache", "read:project", "read-write:project", "read:deployment", "read-write:deployment", "read-write:edge-cache", "read-write:project-protection-bypass", "read:project-env-vars-non-production", "read-write:project-env-vars-non-production", "read:project-env-vars-production", "read-write:project-env-vars-production", "read-write:project-flags-non-production", "read-write:project-flags-production", "read-write:domain-registrar", "read:sandbox", "read-write:sandbox" ] }, "type": "array" } }, "type": "object" }, "after": { "properties": { "resources": { "properties": { "projectIds": { "properties": { "type": { "type": "string", "enum": [ "list" ] }, "required": { "type": "boolean", "enum": [ true ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "string" ] } }, "required": [ "type" ], "type": "object" } }, "required": [ "items", "required", "type" ], "type": "object" } }, "required": [ "projectIds" ], "type": "object" }, "permissions": { "items": { "type": "string", "enum": [ "read:domain", "read-write:domain", "read:team", "read:billing", "read-write:billing", "read-write:ai-gateway-api-key", "use:ai-gateway", "read-write:project-env-vars", "read-write:drains", "read-write:edge-config", "read:monitoring", "read:access-group", "read:integration-configuration", "read-write:integration-configuration", "read-write:integration-resource", "read-write:blob", "read:event", "read-write:remote-cache", "read:project", "read-write:project", "read:deployment", "read-write:deployment", "read-write:edge-cache", "read-write:project-protection-bypass", "read:project-env-vars-non-production", "read-write:project-env-vars-non-production", "read:project-env-vars-production", "read-write:project-env-vars-production", "read-write:project-flags-non-production", "read-write:project-flags-production", "read-write:domain-registrar", "read:sandbox", "read-write:sandbox" ] }, "type": "array" } }, "type": "object" } }, "required": [ "appName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "appName": { "type": "string" }, "appId": { "type": "string" }, "resources": { "properties": { "projectIds": { "properties": { "type": { "type": "string", "enum": [ "list" ] }, "required": { "type": "boolean", "enum": [ true ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "string" ] } }, "required": [ "type" ], "type": "object" } }, "required": [ "items", "required", "type" ], "type": "object" } }, "required": [ "projectIds" ], "type": "object" }, "permissions": { "items": { "type": "string", "enum": [ "read:domain", "read-write:domain", "read:team", "read:billing", "read-write:billing", "read-write:ai-gateway-api-key", "use:ai-gateway", "read-write:project-env-vars", "read-write:drains", "read-write:edge-config", "read:monitoring", "read:access-group", "read:integration-configuration", "read-write:integration-configuration", "read-write:integration-resource", "read-write:blob", "read:event", "read-write:remote-cache", "read:project", "read-write:project", "read:deployment", "read-write:deployment", "read-write:edge-cache", "read-write:project-protection-bypass", "read:project-env-vars-non-production", "read-write:project-env-vars-non-production", "read:project-env-vars-production", "read-write:project-env-vars-production", "read-write:project-flags-non-production", "read-write:project-flags-production", "read-write:domain-registrar", "read:sandbox", "read-write:sandbox" ] }, "type": "array" } }, "required": [ "appName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "appName": { "type": "string" }, "appId": { "type": "string" }, "secretLastFourChars": { "type": "string" } }, "required": [ "appName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "appName": { "type": "string", "description": "The App's name at the moment this even was published (it may have changed since then)." }, "appId": { "type": "string", "description": "The App's ID. Note that not all historical events have this field." }, "app": { "properties": { "id": { "type": "string", "description": "The App's ID." }, "name": { "type": "string", "description": "The App's name at the moment this even was published (it may have changed since then)." } }, "required": [ "id", "name" ], "type": "object", "description": "Note that not all historical events have this field." }, "issuedBefore": { "type": "number", "description": "UNIX timestamp in seconds. Tokens issued before this timestamp will be revoked. Note that not all historical events have this field." } }, "required": [ "appName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "prevAttackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "prevAttackModeActiveUntil": { "nullable": true, "type": "number" }, "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeActiveUntil": { "nullable": true, "type": "number" } }, "required": [ "attackModeEnabled", "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectName": { "type": "string" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "autoExposeSystemEnvs", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "avatar": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "invoiceId": { "type": "string" }, "amount": { "type": "number" }, "refundReason": { "type": "string" }, "lineItemCount": { "type": "number" } }, "required": [ "amount", "invoiceId", "lineItemCount", "refundReason" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "invoiceId": { "type": "string" }, "newInvoiceId": { "type": "string" }, "settlementMethod": { "type": "string", "enum": [ "refunded-paid", "credited-paid" ] }, "amount": { "type": "number" } }, "required": [ "amount", "invoiceId", "newInvoiceId", "settlementMethod" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "paymentMethodId": { "type": "string" }, "brand": { "type": "string" }, "last4": { "type": "string" } }, "required": [ "paymentMethodId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "subscriptionId": { "type": "string" }, "planSlug": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested.", "required": [ "planSlug" ] }, { "properties": { "subscriptionId": { "type": "string" }, "action": { "type": "string", "enum": [ "cancel_plan" ] }, "data": { "properties": { "planSlug": { "type": "string", "enum": [ "v0_teams", "v0_business" ] }, "reason": { "type": "string", "enum": [ "non-payment" ] } }, "required": [ "planSlug" ], "type": "object" } }, "type": "object", "description": "The payload of the event, if requested.", "required": [ "action", "data" ] }, { "properties": { "subscriptionId": { "type": "string" }, "action": { "type": "string", "enum": [ "resume_plan" ] }, "data": { "properties": { "planSlug": { "type": "string", "enum": [ "v0_teams", "v0_business" ] } }, "required": [ "planSlug" ], "type": "object" } }, "type": "object", "description": "The payload of the event, if requested.", "required": [ "action", "data" ] }, { "properties": { "subscriptionId": { "type": "string" }, "action": { "type": "string", "enum": [ "mutate" ] }, "data": { "additionalProperties": true, "type": "object" } }, "type": "object", "description": "The payload of the event, if requested.", "required": [ "action", "data" ] }, { "properties": { "subscriptionId": { "type": "string" }, "productAliases": { "items": { "type": "string" }, "type": "array" } }, "type": "object", "description": "The payload of the event, if requested.", "required": [ "productAliases" ] }, { "properties": { "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "bulkRedirectsLimit": { "type": "number" }, "prevBulkRedirectsLimit": { "type": "number" } }, "required": [ "bulkRedirectsLimit", "prevBulkRedirectsLimit", "project" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "versionId": { "type": "string" } }, "required": [ "project", "versionId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "cn": { "type": "string" }, "cns": { "items": { "type": "string" }, "type": "array" }, "custom": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" } }, "required": [ "custom" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "id": { "type": "string" }, "cns": { "items": { "type": "string" }, "type": "array" }, "custom": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "cns", "custom", "id" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "cn": { "type": "string" }, "cns": { "items": { "type": "string" }, "type": "array" }, "id": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "id": { "type": "string" }, "oldTeam": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "newTeam": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" } }, "required": [ "id" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "src": { "type": "string" }, "dst": { "type": "string" } }, "required": [ "dst", "src" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "id": { "type": "string" }, "cn": { "type": "string" }, "cns": { "items": { "type": "string" }, "type": "array" } }, "required": [ "id" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "cn": { "type": "string" }, "cns": { "items": { "type": "string" }, "type": "array" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "configuration": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" } }, "required": [ "configuration" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "configuration": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "configuration", "project", "team" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "configuration": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "passive": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "configuration", "project", "team" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "configuration": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "configuration", "project", "team" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "configuration": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "newName": { "type": "string" } }, "required": [ "configuration", "newName", "team" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "githubLogin": { "type": "string" } }, "required": [ "githubLogin" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "githubLogin": { "type": "string" }, "host": { "type": "string" } }, "required": [ "githubLogin", "host" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "gitlabLogin": { "type": "string" }, "gitlabEmail": { "type": "string" }, "gitlabName": { "type": "string" }, "zeitAccount": { "type": "string" }, "zeitAccountType": { "type": "string" } }, "required": [ "gitlabEmail", "gitlabLogin" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "gitlabLogin": { "type": "string" }, "gitlabUserId": { "type": "number" } }, "required": [ "gitlabLogin", "gitlabUserId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "bitbucketEmail": { "type": "string" }, "bitbucketLogin": { "type": "string" }, "bitbucketName": { "type": "string" } }, "required": [ "bitbucketEmail", "bitbucketLogin" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "bitbucketLogin": { "type": "string" }, "bitbucketAccountId": { "type": "string" } }, "required": [ "bitbucketAccountId", "bitbucketLogin" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "reason": { "type": "string" }, "suffix": { "type": "string" } }, "required": [ "suffix" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "status": { "type": "string" }, "suffix": { "type": "string" } }, "required": [ "status", "suffix" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "suffix": { "type": "string" } }, "required": [ "suffix" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "hookName": { "type": "string" }, "ref": { "type": "string" } }, "required": [ "hookName", "projectId", "projectName", "ref" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "project": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "job": { "properties": { "deployHook": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" } }, "required": [ "createdAt", "id", "name", "ref" ], "type": "object" }, "state": { "type": "string" } }, "required": [ "deployHook", "state" ], "type": "object" } }, "required": [ "job", "project" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "checkId": { "type": "string" }, "checkName": { "type": "string" } }, "required": [ "checkId", "checkName", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "target": { "nullable": true, "type": "string" }, "deployment": { "nullable": true, "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "url": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "readyState": { "type": "string" }, "allowListedReadyStateReasonInternal": { "type": "string", "enum": [ "EARLY_IGNORE_STEP", "IGNORE_STEP", "NAMESPACE_PRUNED", "UNAFFECTED_PROJECT", "UNVERIFIED_COMMIT" ], "description": "A narrowed subset of the deployment's `readyStateReasonInternal` — only values in the public allowlist are permitted here. Callers should run their raw reason through `toAllowListedReadyStateReasonInternal` from `@api/events` before assigning. This keeps abuse / moderation / admin reasons out of the public activity log." } }, "required": [ "id", "meta", "name", "url" ], "type": "object" }, "url": { "type": "string" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "deploymentId": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "projectId": { "type": "string" }, "regions": { "items": { "type": "string" }, "type": "array" }, "type": { "type": "string" } }, "required": [ "url" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "job": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "bitbucket-push" ] }, "authorized": { "type": "boolean", "enum": [ false, true ] }, "authorizedBy": { "type": "string" }, "jobProjectIds": { "items": { "type": "string" }, "type": "array", "description": "Since December 2022 All project ids associated to this job. Think monorepo. This job will be for one of these project." }, "jobPairs": { "items": { "items": { "oneOf": [ { "type": "string" }, { "type": "string" } ] }, "maxItems": 2, "minItems": 2, "type": "array", "description": "Since December 2022 Pairs of projects and owner ids to build for this build request." }, "type": "array", "description": "Since December 2022 Pairs of projects and owner ids to build for this build request." }, "skippedJobPairs": { "items": { "items": { "oneOf": [ { "type": "string" }, { "type": "string" } ] }, "maxItems": 2, "minItems": 2, "type": "array", "description": "Since June 2024 Pairs of projects and owner ids to immediately finish (without building) because we want to create them in a skipped state." }, "type": "array", "description": "Since June 2024 Pairs of projects and owner ids to immediately finish (without building) because we want to create them in a skipped state." }, "gitHashtagVercel": { "items": { "type": "string", "enum": [ "#VERCEL_SDDJ_BEFORE_BUILD_JOB_QUEUED_ERROR", "#VERCEL_SDDJ_AFTER_GET_REPO_FORCE_ERROR", "#VERCEL_SDDJ_AFTER_GET_REPO_FORCE_CANCEL", "#VERCEL_SDDJ_AFTER_VERIFY_FORCE_ERROR", "#VERCEL_SDDJ_AFTER_VERIFY_FORCE_CANCEL", "#VERCEL_SDDJ_FORCE_GIT_FORK_ERROR", "#VERCEL_BUILD_PRIO_1", "#VERCEL_BUILD_PRIO_2", "#VERCEL_BUILD_PRIO_3", "#VERCEL_BUILD_PRIO_4", "#VERCEL_BUILD_PRIO_5", "#VERCEL_BUILD_PRIO_6", "#VERCEL_BUILD_PRIO_7", "#VERCEL_BUILD_PRIO_8", "#VERCEL_BUILD_PRIO_9", "#VERCEL_BUILD_PRIO_10", "#VERCEL_SKIP", "#VERCEL_V0_MESSAGE" ], "description": "Since February 2022 All the hashtag-vercel tags found in the commit message triggering the deploy. For example, #VERCEL_DO_SOMETHING" }, "type": "array", "description": "Since February 2022 All the hashtag-vercel tags found in the commit message triggering the deploy. For example, #VERCEL_DO_SOMETHING" }, "connectedProjectCount": { "type": "number", "description": "Since April 2023 Cached count of how many projects are connected to the repo. Saves a few Cosmos queries down the road in the main flow." }, "prIdOrZero": { "type": "number", "description": "Since April 2023 If set then it is a cached result of asking the remote for the PR ID the commit that triggered this Job. Or zero if it was not a PR. This prevents a few git round trips by the git updater." }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ] }, "onCommit": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "onCommit", "onPullRequest" ], "type": "object", "description": "Since June 2023 Determines if comments should be posted to the git host. Replaces `github.silent` in the vercel.json." }, "isManualGitDeploy": { "type": "boolean", "enum": [ false, true ], "description": "Since 28 Feb 2024 If set to true, identifies that the git job was created for a manual git deployment" }, "commitVerification": { "type": "string", "enum": [ "verified", "unverified", "unknown" ], "description": "Since 6 Nov 2025 The verification status of the commit. - 'verified' if the commit is verified - 'unverified' if the commit is not verified - 'unknown' if the commit verification status is unknown or not supported" }, "nsnbSideEffect": { "properties": { "action": { "type": "string", "enum": [ "auto-approved-member", "auto-approved-pending-invite" ] }, "gitUserLogin": { "type": "string" } }, "required": [ "action", "gitUserLogin" ], "type": "object", "description": "Since March 2026 Records a successful NSNB auto-add result so later GitHub PR comments can deterministically explain why this SHA was allowed to deploy." }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "deployHook": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" } }, "required": [ "createdAt", "id", "name", "ref" ], "type": "object" }, "eventful": { "type": "boolean", "enum": [ false, true ] }, "forceNew": { "type": "boolean", "enum": [ false, true ] }, "headInfo": { "properties": { "owner": { "type": "string" }, "ref": { "type": "string" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "owner", "ref", "repoUuid", "sha", "slug" ], "type": "object" }, "linkedProjectId": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "prId": { "type": "number" }, "projectId": { "type": "string" }, "customEnvId": { "nullable": true, "type": "string" }, "ref": { "type": "string" }, "repoPushedAt": { "nullable": true, "type": "number" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "silent": { "type": "boolean", "enum": [ false, true ] }, "slug": { "type": "string" }, "target": { "nullable": true, "type": "string" }, "url": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] }, "workspaceUuid": { "type": "string" }, "provider": { "type": "string", "enum": [ "bitbucket" ] } }, "required": [ "headInfo", "name", "owner", "provider", "ref", "repoUuid", "sha", "slug", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "eventful": { "type": "boolean", "enum": [ false, true ] }, "headInfo": { "properties": { "owner": { "type": "string" }, "ref": { "type": "string" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "owner", "ref", "repoUuid", "sha", "slug" ], "type": "object" }, "linkedProjectId": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "prId": { "type": "number" }, "projectId": { "type": "string" }, "customEnvId": { "nullable": true, "type": "string" }, "ref": { "type": "string" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket-now-comment" ] }, "workspaceUuid": { "type": "string" }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ] }, "onCommit": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "provider": { "type": "string", "enum": [ "bitbucket" ] } }, "required": [ "headInfo", "name", "owner", "prId", "provider", "ref", "repoUuid", "sha", "slug", "type", "workspaceUuid" ], "type": "object", "description": "Represents the payload for a Bitbucket comment job This interface defines the structure of data needed when creating a job to handle comments on Bitbucket pull requests or commits." }, { "properties": { "prId": { "type": "number" }, "type": { "type": "string", "enum": [ "pr" ] }, "authorized": { "type": "boolean", "enum": [ false, true ] }, "authorizedBy": { "type": "string" }, "jobProjectIds": { "items": { "type": "string" }, "type": "array", "description": "Since December 2022 All project ids associated to this job. Think monorepo. This job will be for one of these project." }, "jobPairs": { "items": { "items": { "oneOf": [ { "type": "string" }, { "type": "string" } ] }, "maxItems": 2, "minItems": 2, "type": "array", "description": "Since December 2022 Pairs of projects and owner ids to build for this build request." }, "type": "array", "description": "Since December 2022 Pairs of projects and owner ids to build for this build request." }, "skippedJobPairs": { "items": { "items": { "oneOf": [ { "type": "string" }, { "type": "string" } ] }, "maxItems": 2, "minItems": 2, "type": "array", "description": "Since June 2024 Pairs of projects and owner ids to immediately finish (without building) because we want to create them in a skipped state." }, "type": "array", "description": "Since June 2024 Pairs of projects and owner ids to immediately finish (without building) because we want to create them in a skipped state." }, "gitHashtagVercel": { "items": { "type": "string", "enum": [ "#VERCEL_SDDJ_BEFORE_BUILD_JOB_QUEUED_ERROR", "#VERCEL_SDDJ_AFTER_GET_REPO_FORCE_ERROR", "#VERCEL_SDDJ_AFTER_GET_REPO_FORCE_CANCEL", "#VERCEL_SDDJ_AFTER_VERIFY_FORCE_ERROR", "#VERCEL_SDDJ_AFTER_VERIFY_FORCE_CANCEL", "#VERCEL_SDDJ_FORCE_GIT_FORK_ERROR", "#VERCEL_BUILD_PRIO_1", "#VERCEL_BUILD_PRIO_2", "#VERCEL_BUILD_PRIO_3", "#VERCEL_BUILD_PRIO_4", "#VERCEL_BUILD_PRIO_5", "#VERCEL_BUILD_PRIO_6", "#VERCEL_BUILD_PRIO_7", "#VERCEL_BUILD_PRIO_8", "#VERCEL_BUILD_PRIO_9", "#VERCEL_BUILD_PRIO_10", "#VERCEL_SKIP", "#VERCEL_V0_MESSAGE" ], "description": "Since February 2022 All the hashtag-vercel tags found in the commit message triggering the deploy. For example, #VERCEL_DO_SOMETHING" }, "type": "array", "description": "Since February 2022 All the hashtag-vercel tags found in the commit message triggering the deploy. For example, #VERCEL_DO_SOMETHING" }, "connectedProjectCount": { "type": "number", "description": "Since April 2023 Cached count of how many projects are connected to the repo. Saves a few Cosmos queries down the road in the main flow." }, "prIdOrZero": { "type": "number", "description": "Since April 2023 If set then it is a cached result of asking the remote for the PR ID the commit that triggered this Job. Or zero if it was not a PR. This prevents a few git round trips by the git updater." }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ] }, "onCommit": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "onCommit", "onPullRequest" ], "type": "object", "description": "Since June 2023 Determines if comments should be posted to the git host. Replaces `github.silent` in the vercel.json." }, "isManualGitDeploy": { "type": "boolean", "enum": [ false, true ], "description": "Since 28 Feb 2024 If set to true, identifies that the git job was created for a manual git deployment" }, "commitVerification": { "type": "string", "enum": [ "verified", "unverified", "unknown" ], "description": "Since 6 Nov 2025 The verification status of the commit. - 'verified' if the commit is verified - 'unverified' if the commit is not verified - 'unknown' if the commit verification status is unknown or not supported" }, "nsnbSideEffect": { "properties": { "action": { "type": "string", "enum": [ "auto-approved-member", "auto-approved-pending-invite" ] }, "gitUserLogin": { "type": "string" } }, "required": [ "action", "gitUserLogin" ], "type": "object", "description": "Since March 2026 Records a successful NSNB auto-add result so later GitHub PR comments can deterministically explain why this SHA was allowed to deploy." }, "committerGitUserId": { "type": "number", "description": "Remote account id of the committer details (github id etc, not vercel). Note that the committer name/email are user input verbatim and not verified. Github does appear to resolve the given email to the username so we can trust that. If the username matches that of the sender, which is verified info, then we can use the account id and account type. See api-incoming, where we determine and set this property Note that even with that, the account may still have been spoofed." }, "committerGitUserType": { "type": "string", "description": "Remote account type of the committer details (github type etc, not vercel). Note that the committer name/email are user input verbatim and not verified. Github does appear to resolve the given email to the username so we can trust that. If the username matches that of the sender, which is verified info, then we can use the account id and account type. See api-incoming, where we determine and set this property Note that even with that, the account may still have been spoofed." }, "createdAt": { "type": "number" }, "forceNew": { "type": "boolean", "enum": [ false, true ] }, "deploymentId": { "type": "string" }, "deployHook": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" } }, "required": [ "createdAt", "id", "name", "ref" ], "type": "object" }, "beforeSha": { "type": "string" }, "defaultBranch": { "type": "string" }, "eventful": { "type": "boolean", "enum": [ false, true ] }, "githubDeploymentId": { "type": "string" }, "headInfo": { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" } }, "required": [ "org", "ref", "repo", "repoId", "sha" ], "type": "object", "description": "Information about the head commit/branch for a GitHub repository" }, "installationId": { "type": "number" }, "isPrivate": { "type": "boolean", "enum": [ false, true ] }, "linkedProjectId": { "type": "string" }, "org": { "type": "string" }, "projectId": { "type": "string" }, "customEnvId": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "url": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] }, "provider": { "type": "string", "enum": [ "github", "github-limited", "github-custom-host" ] }, "customHost": { "type": "string" } }, "required": [ "headInfo", "installationId", "isPrivate", "org", "prId", "provider", "repo", "repoId", "type" ], "type": "object" }, { "properties": { "repoPushedAt": { "nullable": true, "type": "number" }, "commitInfo": { "properties": { "total": { "type": "number" }, "earliestSha": { "type": "string" } }, "required": [ "total" ], "type": "object" }, "forced": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "push" ] }, "authorized": { "type": "boolean", "enum": [ false, true ] }, "authorizedBy": { "type": "string" }, "jobProjectIds": { "items": { "type": "string" }, "type": "array", "description": "Since December 2022 All project ids associated to this job. Think monorepo. This job will be for one of these project." }, "jobPairs": { "items": { "items": { "oneOf": [ { "type": "string" }, { "type": "string" } ] }, "maxItems": 2, "minItems": 2, "type": "array", "description": "Since December 2022 Pairs of projects and owner ids to build for this build request." }, "type": "array", "description": "Since December 2022 Pairs of projects and owner ids to build for this build request." }, "skippedJobPairs": { "items": { "items": { "oneOf": [ { "type": "string" }, { "type": "string" } ] }, "maxItems": 2, "minItems": 2, "type": "array", "description": "Since June 2024 Pairs of projects and owner ids to immediately finish (without building) because we want to create them in a skipped state." }, "type": "array", "description": "Since June 2024 Pairs of projects and owner ids to immediately finish (without building) because we want to create them in a skipped state." }, "gitHashtagVercel": { "items": { "type": "string", "enum": [ "#VERCEL_SDDJ_BEFORE_BUILD_JOB_QUEUED_ERROR", "#VERCEL_SDDJ_AFTER_GET_REPO_FORCE_ERROR", "#VERCEL_SDDJ_AFTER_GET_REPO_FORCE_CANCEL", "#VERCEL_SDDJ_AFTER_VERIFY_FORCE_ERROR", "#VERCEL_SDDJ_AFTER_VERIFY_FORCE_CANCEL", "#VERCEL_SDDJ_FORCE_GIT_FORK_ERROR", "#VERCEL_BUILD_PRIO_1", "#VERCEL_BUILD_PRIO_2", "#VERCEL_BUILD_PRIO_3", "#VERCEL_BUILD_PRIO_4", "#VERCEL_BUILD_PRIO_5", "#VERCEL_BUILD_PRIO_6", "#VERCEL_BUILD_PRIO_7", "#VERCEL_BUILD_PRIO_8", "#VERCEL_BUILD_PRIO_9", "#VERCEL_BUILD_PRIO_10", "#VERCEL_SKIP", "#VERCEL_V0_MESSAGE" ], "description": "Since February 2022 All the hashtag-vercel tags found in the commit message triggering the deploy. For example, #VERCEL_DO_SOMETHING" }, "type": "array", "description": "Since February 2022 All the hashtag-vercel tags found in the commit message triggering the deploy. For example, #VERCEL_DO_SOMETHING" }, "connectedProjectCount": { "type": "number", "description": "Since April 2023 Cached count of how many projects are connected to the repo. Saves a few Cosmos queries down the road in the main flow." }, "prIdOrZero": { "type": "number", "description": "Since April 2023 If set then it is a cached result of asking the remote for the PR ID the commit that triggered this Job. Or zero if it was not a PR. This prevents a few git round trips by the git updater." }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ] }, "onCommit": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "onCommit", "onPullRequest" ], "type": "object", "description": "Since June 2023 Determines if comments should be posted to the git host. Replaces `github.silent` in the vercel.json." }, "isManualGitDeploy": { "type": "boolean", "enum": [ false, true ], "description": "Since 28 Feb 2024 If set to true, identifies that the git job was created for a manual git deployment" }, "commitVerification": { "type": "string", "enum": [ "verified", "unverified", "unknown" ], "description": "Since 6 Nov 2025 The verification status of the commit. - 'verified' if the commit is verified - 'unverified' if the commit is not verified - 'unknown' if the commit verification status is unknown or not supported" }, "nsnbSideEffect": { "properties": { "action": { "type": "string", "enum": [ "auto-approved-member", "auto-approved-pending-invite" ] }, "gitUserLogin": { "type": "string" } }, "required": [ "action", "gitUserLogin" ], "type": "object", "description": "Since March 2026 Records a successful NSNB auto-add result so later GitHub PR comments can deterministically explain why this SHA was allowed to deploy." }, "committerGitUserId": { "type": "number", "description": "Remote account id of the committer details (github id etc, not vercel). Note that the committer name/email are user input verbatim and not verified. Github does appear to resolve the given email to the username so we can trust that. If the username matches that of the sender, which is verified info, then we can use the account id and account type. See api-incoming, where we determine and set this property Note that even with that, the account may still have been spoofed." }, "committerGitUserType": { "type": "string", "description": "Remote account type of the committer details (github type etc, not vercel). Note that the committer name/email are user input verbatim and not verified. Github does appear to resolve the given email to the username so we can trust that. If the username matches that of the sender, which is verified info, then we can use the account id and account type. See api-incoming, where we determine and set this property Note that even with that, the account may still have been spoofed." }, "createdAt": { "type": "number" }, "forceNew": { "type": "boolean", "enum": [ false, true ] }, "deploymentId": { "type": "string" }, "deployHook": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" } }, "required": [ "createdAt", "id", "name", "ref" ], "type": "object" }, "beforeSha": { "type": "string" }, "defaultBranch": { "type": "string" }, "eventful": { "type": "boolean", "enum": [ false, true ] }, "githubDeploymentId": { "type": "string" }, "headInfo": { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" } }, "required": [ "org", "ref", "repo", "repoId", "sha" ], "type": "object", "description": "Information about the head commit/branch for a GitHub repository" }, "installationId": { "type": "number" }, "isPrivate": { "type": "boolean", "enum": [ false, true ] }, "linkedProjectId": { "type": "string" }, "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "projectId": { "type": "string" }, "customEnvId": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "url": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] }, "provider": { "type": "string", "enum": [ "github", "github-limited", "github-custom-host" ] }, "customHost": { "type": "string" } }, "required": [ "headInfo", "installationId", "isPrivate", "org", "prId", "provider", "repo", "repoId", "repoPushedAt", "type" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "eventful": { "type": "boolean", "enum": [ false, true ] }, "headInfo": { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" } }, "required": [ "org", "ref", "repo", "repoId", "sha" ], "type": "object", "description": "Information about the head commit/branch for a GitHub repository" }, "beforeSha": { "type": "string" }, "installationId": { "type": "number" }, "isPrivate": { "type": "boolean", "enum": [ false, true ] }, "linkedProjectId": { "type": "string" }, "org": { "type": "string" }, "prId": { "type": "number" }, "projectId": { "nullable": true }, "customEnvId": { "nullable": true }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "now-comment" ] }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ] }, "onCommit": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "provider": { "type": "string", "enum": [ "github", "github-limited", "github-custom-host" ] }, "customHost": { "type": "string" } }, "required": [ "headInfo", "installationId", "isPrivate", "org", "prId", "projectId", "provider", "repo", "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab-push" ] }, "authorized": { "type": "boolean", "enum": [ false, true ] }, "authorizedBy": { "type": "string" }, "jobProjectIds": { "items": { "type": "string" }, "type": "array", "description": "Since December 2022 All project ids associated to this job. Think monorepo. This job will be for one of these project." }, "jobPairs": { "items": { "items": { "oneOf": [ { "type": "string" }, { "type": "string" } ] }, "maxItems": 2, "minItems": 2, "type": "array", "description": "Since December 2022 Pairs of projects and owner ids to build for this build request." }, "type": "array", "description": "Since December 2022 Pairs of projects and owner ids to build for this build request." }, "skippedJobPairs": { "items": { "items": { "oneOf": [ { "type": "string" }, { "type": "string" } ] }, "maxItems": 2, "minItems": 2, "type": "array", "description": "Since June 2024 Pairs of projects and owner ids to immediately finish (without building) because we want to create them in a skipped state." }, "type": "array", "description": "Since June 2024 Pairs of projects and owner ids to immediately finish (without building) because we want to create them in a skipped state." }, "gitHashtagVercel": { "items": { "type": "string", "enum": [ "#VERCEL_SDDJ_BEFORE_BUILD_JOB_QUEUED_ERROR", "#VERCEL_SDDJ_AFTER_GET_REPO_FORCE_ERROR", "#VERCEL_SDDJ_AFTER_GET_REPO_FORCE_CANCEL", "#VERCEL_SDDJ_AFTER_VERIFY_FORCE_ERROR", "#VERCEL_SDDJ_AFTER_VERIFY_FORCE_CANCEL", "#VERCEL_SDDJ_FORCE_GIT_FORK_ERROR", "#VERCEL_BUILD_PRIO_1", "#VERCEL_BUILD_PRIO_2", "#VERCEL_BUILD_PRIO_3", "#VERCEL_BUILD_PRIO_4", "#VERCEL_BUILD_PRIO_5", "#VERCEL_BUILD_PRIO_6", "#VERCEL_BUILD_PRIO_7", "#VERCEL_BUILD_PRIO_8", "#VERCEL_BUILD_PRIO_9", "#VERCEL_BUILD_PRIO_10", "#VERCEL_SKIP", "#VERCEL_V0_MESSAGE" ], "description": "Since February 2022 All the hashtag-vercel tags found in the commit message triggering the deploy. For example, #VERCEL_DO_SOMETHING" }, "type": "array", "description": "Since February 2022 All the hashtag-vercel tags found in the commit message triggering the deploy. For example, #VERCEL_DO_SOMETHING" }, "connectedProjectCount": { "type": "number", "description": "Since April 2023 Cached count of how many projects are connected to the repo. Saves a few Cosmos queries down the road in the main flow." }, "prIdOrZero": { "type": "number", "description": "Since April 2023 If set then it is a cached result of asking the remote for the PR ID the commit that triggered this Job. Or zero if it was not a PR. This prevents a few git round trips by the git updater." }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ] }, "onCommit": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "onCommit", "onPullRequest" ], "type": "object", "description": "Since June 2023 Determines if comments should be posted to the git host. Replaces `github.silent` in the vercel.json." }, "isManualGitDeploy": { "type": "boolean", "enum": [ false, true ], "description": "Since 28 Feb 2024 If set to true, identifies that the git job was created for a manual git deployment" }, "commitVerification": { "type": "string", "enum": [ "verified", "unverified", "unknown" ], "description": "Since 6 Nov 2025 The verification status of the commit. - 'verified' if the commit is verified - 'unverified' if the commit is not verified - 'unknown' if the commit verification status is unknown or not supported" }, "nsnbSideEffect": { "properties": { "action": { "type": "string", "enum": [ "auto-approved-member", "auto-approved-pending-invite" ] }, "gitUserLogin": { "type": "string" } }, "required": [ "action", "gitUserLogin" ], "type": "object", "description": "Since March 2026 Records a successful NSNB auto-add result so later GitHub PR comments can deterministically explain why this SHA was allowed to deploy." }, "commit": { "properties": { "id": { "type": "string" }, "authorAvatar": { "nullable": true, "type": "string" }, "authorEmail": { "nullable": true, "type": "string" }, "authorId": { "nullable": true, "type": "number" }, "authorLogin": { "nullable": true, "type": "string" }, "authorName": { "nullable": true, "type": "string" } }, "required": [ "id" ], "type": "object" }, "createdAt": { "type": "number" }, "deployHook": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" } }, "required": [ "createdAt", "id", "name", "ref" ], "type": "object" }, "deploymentId": { "type": "string" }, "eventful": { "type": "boolean", "enum": [ false, true ] }, "forceNew": { "type": "boolean", "enum": [ false, true ] }, "headInfo": { "properties": { "project": { "properties": { "defaultBranch": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "name": { "nullable": true, "type": "string" }, "namespace": { "nullable": true, "type": "string" }, "path": { "nullable": true, "type": "string" }, "url": { "nullable": true, "type": "string" } }, "required": [ "id" ], "type": "object" }, "ref": { "type": "string" }, "sha": { "type": "string" } }, "required": [ "project", "ref", "sha" ], "type": "object", "description": "GitLab" }, "linkedProjectId": { "type": "string" }, "prId": { "type": "number" }, "project": { "properties": { "defaultBranch": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "name": { "nullable": true, "type": "string" }, "namespace": { "nullable": true, "type": "string" }, "path": { "nullable": true, "type": "string" }, "url": { "nullable": true, "type": "string" } }, "required": [ "id" ], "type": "object" }, "projectId": { "type": "string" }, "customEnvId": { "nullable": true, "type": "string" }, "ref": { "type": "string" }, "repoPushedAt": { "nullable": true, "type": "number" }, "sha": { "type": "string" }, "silent": { "type": "boolean", "enum": [ false, true ] }, "target": { "nullable": true, "type": "string" }, "url": { "type": "string" }, "withCache": { "type": "boolean", "enum": [ false, true ] }, "provider": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "headInfo", "project", "provider", "ref", "sha", "type" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "eventful": { "type": "boolean", "enum": [ false, true ] }, "headInfo": { "properties": { "project": { "properties": { "defaultBranch": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "name": { "nullable": true, "type": "string" }, "namespace": { "nullable": true, "type": "string" }, "path": { "nullable": true, "type": "string" }, "url": { "nullable": true, "type": "string" } }, "required": [ "id" ], "type": "object" }, "ref": { "type": "string" }, "sha": { "type": "string" } }, "required": [ "project", "ref", "sha" ], "type": "object", "description": "GitLab" }, "linkedProjectId": { "type": "string" }, "prId": { "type": "number" }, "project": { "properties": { "defaultBranch": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "name": { "nullable": true, "type": "string" }, "namespace": { "nullable": true, "type": "string" }, "path": { "nullable": true, "type": "string" }, "url": { "nullable": true, "type": "string" } }, "required": [ "id" ], "type": "object" }, "projectId": { "type": "string" }, "customEnvId": { "nullable": true, "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab-now-comment" ] }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ] }, "onCommit": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "provider": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "headInfo", "prId", "project", "provider", "ref", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel-push" ] }, "ref": { "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "repoPushedAt": { "nullable": true, "type": "number" }, "deployHook": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" } }, "required": [ "createdAt", "id", "name", "ref" ], "type": "object" }, "url": { "type": "string" }, "target": { "nullable": true, "type": "string" }, "deploymentId": { "type": "string" }, "linkedProjectId": { "type": "string" }, "projectId": { "type": "string" }, "authorized": { "type": "boolean", "enum": [ false, true ] }, "authorizedBy": { "type": "string" }, "jobProjectIds": { "items": { "type": "string" }, "type": "array", "description": "Since December 2022 All project ids associated to this job. Think monorepo. This job will be for one of these project." }, "jobPairs": { "items": { "items": { "oneOf": [ { "type": "string" }, { "type": "string" } ] }, "maxItems": 2, "minItems": 2, "type": "array", "description": "Since December 2022 Pairs of projects and owner ids to build for this build request." }, "type": "array", "description": "Since December 2022 Pairs of projects and owner ids to build for this build request." }, "skippedJobPairs": { "items": { "items": { "oneOf": [ { "type": "string" }, { "type": "string" } ] }, "maxItems": 2, "minItems": 2, "type": "array", "description": "Since June 2024 Pairs of projects and owner ids to immediately finish (without building) because we want to create them in a skipped state." }, "type": "array", "description": "Since June 2024 Pairs of projects and owner ids to immediately finish (without building) because we want to create them in a skipped state." }, "gitHashtagVercel": { "items": { "type": "string", "enum": [ "#VERCEL_SDDJ_BEFORE_BUILD_JOB_QUEUED_ERROR", "#VERCEL_SDDJ_AFTER_GET_REPO_FORCE_ERROR", "#VERCEL_SDDJ_AFTER_GET_REPO_FORCE_CANCEL", "#VERCEL_SDDJ_AFTER_VERIFY_FORCE_ERROR", "#VERCEL_SDDJ_AFTER_VERIFY_FORCE_CANCEL", "#VERCEL_SDDJ_FORCE_GIT_FORK_ERROR", "#VERCEL_BUILD_PRIO_1", "#VERCEL_BUILD_PRIO_2", "#VERCEL_BUILD_PRIO_3", "#VERCEL_BUILD_PRIO_4", "#VERCEL_BUILD_PRIO_5", "#VERCEL_BUILD_PRIO_6", "#VERCEL_BUILD_PRIO_7", "#VERCEL_BUILD_PRIO_8", "#VERCEL_BUILD_PRIO_9", "#VERCEL_BUILD_PRIO_10", "#VERCEL_SKIP", "#VERCEL_V0_MESSAGE" ], "description": "Since February 2022 All the hashtag-vercel tags found in the commit message triggering the deploy. For example, #VERCEL_DO_SOMETHING" }, "type": "array", "description": "Since February 2022 All the hashtag-vercel tags found in the commit message triggering the deploy. For example, #VERCEL_DO_SOMETHING" }, "connectedProjectCount": { "type": "number", "description": "Since April 2023 Cached count of how many projects are connected to the repo. Saves a few Cosmos queries down the road in the main flow." }, "prIdOrZero": { "type": "number", "description": "Since April 2023 If set then it is a cached result of asking the remote for the PR ID the commit that triggered this Job. Or zero if it was not a PR. This prevents a few git round trips by the git updater." }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ] }, "onCommit": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "onCommit", "onPullRequest" ], "type": "object", "description": "Since June 2023 Determines if comments should be posted to the git host. Replaces `github.silent` in the vercel.json." }, "isManualGitDeploy": { "type": "boolean", "enum": [ false, true ], "description": "Since 28 Feb 2024 If set to true, identifies that the git job was created for a manual git deployment" }, "commitVerification": { "type": "string", "enum": [ "verified", "unverified", "unknown" ], "description": "Since 6 Nov 2025 The verification status of the commit. - 'verified' if the commit is verified - 'unverified' if the commit is not verified - 'unknown' if the commit verification status is unknown or not supported" }, "nsnbSideEffect": { "properties": { "action": { "type": "string", "enum": [ "auto-approved-member", "auto-approved-pending-invite" ] }, "gitUserLogin": { "type": "string" } }, "required": [ "action", "gitUserLogin" ], "type": "object", "description": "Since March 2026 Records a successful NSNB auto-add result so later GitHub PR comments can deterministically explain why this SHA was allowed to deploy." }, "headInfo": { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" } }, "required": [ "org", "ref", "repo", "sha" ], "type": "object", "description": "Vercel" }, "org": { "type": "string" }, "provider": { "type": "string", "enum": [ "vercel" ] }, "customEnvId": { "nullable": true, "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "headInfo", "org", "provider", "ref", "repo", "sha", "type" ], "type": "object" } ] } }, "required": [ "job" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "url": { "type": "string" }, "oldTeam": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "newTeam": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" } }, "required": [ "url" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "sha": { "type": "string" }, "gitUserPlatform": { "type": "string" }, "projectName": { "type": "string" }, "gitCommitterName": { "type": "string" }, "source": { "type": "string" } }, "required": [ "gitCommitterName", "gitUserPlatform", "projectName", "sha", "source" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "deployment": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "url": { "type": "string" } }, "required": [ "id", "meta", "name", "url" ], "type": "object" }, "deploymentId": { "type": "string" }, "url": { "type": "string" } }, "required": [ "deployment", "deploymentId", "url" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" }, "integrationSlug": { "type": "string" }, "integrationName": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "configurationId", "integrationId", "integrationName", "integrationSlug", "ownerId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "id": { "type": "string" }, "value": { "type": "string" }, "name": { "type": "string" }, "domain": { "type": "string" }, "type": { "type": "string" }, "mxPriority": { "type": "number" } }, "required": [ "domain", "id", "name", "type", "value" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "id": { "type": "string" }, "value": { "type": "string" }, "name": { "type": "string" }, "domain": { "type": "string" }, "type": { "type": "string" } }, "required": [ "domain", "id", "name", "type", "value" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "price": { "type": "number" }, "currency": { "type": "string" } }, "required": [ "name", "price" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "cdnEnabled": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "cdnEnabled", "name" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "oldTeam": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "newTeam": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" } }, "required": [ "name" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "userId": { "type": "string" }, "teamId": { "type": "string" }, "ownerName": { "type": "string" } }, "required": [ "name", "ownerName", "teamId", "userId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "domainId": { "type": "string" }, "name": { "type": "string" } }, "required": [ "domainId", "name" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "previousServiceType": { "type": "string" }, "serviceType": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "nameservers": { "items": { "type": "string" }, "type": "array" } }, "required": [ "id", "name", "nameservers", "previousServiceType", "serviceType" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "domain": { "type": "string" }, "customNameservers": { "nullable": true, "items": { "type": "string" }, "type": "array" }, "prevCustomNameservers": { "nullable": true, "items": { "type": "string" }, "type": "array" } }, "required": [ "customNameservers", "domain", "prevCustomNameservers" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "domain": { "type": "string" } }, "required": [ "domain" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "domain": { "type": "string" }, "zone": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "domain", "zone" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "fromId": { "nullable": true, "type": "string" }, "fromName": { "nullable": true, "type": "string" } }, "required": [ "fromId", "fromName", "name" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "destinationId": { "nullable": true, "type": "string" }, "destinationName": { "nullable": true, "type": "string" } }, "required": [ "destinationId", "destinationName", "name" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "destinationId": { "type": "string" }, "destinationName": { "type": "string" } }, "required": [ "destinationId", "destinationName", "name" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "renew": { "type": "boolean", "enum": [ false, true ] }, "domain": { "type": "string" } }, "required": [ "domain" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "price": { "type": "number" }, "currency": { "type": "string" } }, "required": [ "name" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "drainUrl": { "nullable": true, "type": "string" }, "integrationName": { "type": "string" } }, "required": [ "drainUrl" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "srcImages": { "items": { "type": "string" }, "type": "array" } }, "required": [ "projectId", "projectName", "srcImages" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "target": { "type": "string" } }, "required": [ "projectId", "projectName", "tags" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" } }, "required": [ "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "edgeConfigId": { "type": "string" }, "edgeConfigSlug": { "type": "string" }, "edgeConfigDigest": { "type": "string" } }, "required": [ "edgeConfigDigest", "edgeConfigId", "edgeConfigSlug" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "edgeConfigId": { "type": "string" }, "edgeConfigSlug": { "type": "string" }, "edgeConfigSchema": { "type": "object" } }, "required": [ "edgeConfigId", "edgeConfigSlug" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "edgeConfigId": { "type": "string" }, "edgeConfigSlug": { "type": "string" }, "edgeConfigDigest": { "type": "string" } }, "required": [ "edgeConfigId", "edgeConfigSlug" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "edgeConfig": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "id", "slug" ], "type": "object" }, "fromAccount": { "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "user", "team" ] }, "slug": { "type": "string" }, "username": { "type": "string" } }, "required": [ "id", "type" ], "type": "object" }, "toAccount": { "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "user", "team" ] }, "slug": { "type": "string" }, "username": { "type": "string" } }, "required": [ "id", "type" ], "type": "object" } }, "required": [ "edgeConfig", "fromAccount", "toAccount" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "edgeConfigId": { "type": "string" }, "edgeConfigSlug": { "type": "string" }, "edgeConfigTokenId": { "type": "string" }, "label": { "type": "string" } }, "required": [ "edgeConfigId", "edgeConfigSlug", "edgeConfigTokenId", "label" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "edgeConfigId": { "type": "string" }, "edgeConfigSlug": { "type": "string" }, "edgeConfigTokenIds": { "items": { "type": "string" }, "type": "array", "description": "ids of deleted tokens" } }, "required": [ "edgeConfigId", "edgeConfigSlug", "edgeConfigTokenIds" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "email", "name" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "previousRule": { "properties": { "email": { "type": "string" } }, "required": [ "email" ], "type": "object" } }, "required": [ "previousRule", "team" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "previousRule": { "properties": { "email": { "type": "string" } }, "required": [ "email" ], "type": "object" }, "nextRule": { "properties": { "email": { "type": "string" } }, "required": [ "email" ], "type": "object" } }, "required": [ "team" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "key": { "type": "string" }, "projectId": { "type": "string" }, "projectName": { "type": "string" }, "target": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "customEnvironmentSlugs": { "items": { "type": "string" }, "type": "array" }, "id": { "type": "string" }, "gitBranch": { "type": "string" }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "source": { "type": "string" }, "ipAddress": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "value": { "type": "string", "description": "The value of the Shared Env Var." }, "projectId": { "items": { "type": "string" }, "type": "array", "description": "The unique identifiers of the projects which the Shared Env Var is linked to.", "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrasEFg" ] }, "type": { "type": "string", "enum": [ "system", "encrypted", "plain", "sensitive" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "target": { "items": { "type": "string", "enum": [ "production", "preview", "development" ], "example": "production", "description": "environments this env variable targets" }, "type": "array", "description": "environments this env variable targets", "example": "production" }, "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array", "description": "The custom environment IDs that this Shared Env Var is scoped to." }, "decrypted": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env variable is decrypted" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." }, "projectNames": { "items": { "type": "string" }, "type": "array" }, "ipAddress": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "oldEnvVar": { "properties": { "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "value": { "type": "string", "description": "The value of the Shared Env Var." }, "projectId": { "items": { "type": "string" }, "type": "array", "description": "The unique identifiers of the projects which the Shared Env Var is linked to.", "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrasEFg" ] }, "type": { "type": "string", "enum": [ "system", "encrypted", "plain", "sensitive" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "target": { "items": { "type": "string", "enum": [ "production", "preview", "development" ], "example": "production", "description": "environments this env variable targets" }, "type": "array", "description": "environments this env variable targets", "example": "production" }, "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array", "description": "The custom environment IDs that this Shared Env Var is scoped to." }, "decrypted": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env variable is decrypted" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." } }, "type": "object" }, "newEnvVar": { "properties": { "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "value": { "type": "string", "description": "The value of the Shared Env Var." }, "projectId": { "items": { "type": "string" }, "type": "array", "description": "The unique identifiers of the projects which the Shared Env Var is linked to.", "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrasEFg" ] }, "type": { "type": "string", "enum": [ "system", "encrypted", "plain", "sensitive" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "target": { "items": { "type": "string", "enum": [ "production", "preview", "development" ], "example": "production", "description": "environments this env variable targets" }, "type": "array", "description": "environments this env variable targets", "example": "production" }, "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array", "description": "The custom environment IDs that this Shared Env Var is scoped to." }, "decrypted": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env variable is decrypted" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." } }, "type": "object" }, "updateDiff": { "properties": { "id": { "type": "string" }, "key": { "type": "string" }, "newKey": { "type": "string" }, "oldTarget": { "items": { "type": "string", "enum": [ "production", "preview", "development" ] }, "type": "array" }, "newTarget": { "items": { "type": "string", "enum": [ "production", "preview", "development" ] }, "type": "array" }, "oldType": { "type": "string" }, "newType": { "type": "string" }, "oldProjects": { "items": { "properties": { "projectName": { "type": "string" }, "projectId": { "type": "string" } }, "required": [ "projectId" ], "type": "object" }, "type": "array" }, "newProjects": { "items": { "properties": { "projectName": { "type": "string" }, "projectId": { "type": "string" } }, "required": [ "projectId" ], "type": "object" }, "type": "array" }, "oldCustomEnvironmentIds": { "items": { "type": "string" }, "type": "array" }, "newCustomEnvironmentIds": { "items": { "type": "string" }, "type": "array" }, "changedValue": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "changedValue", "id" ], "type": "object" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "scope": { "type": "string" }, "source": { "type": "string" }, "expiresAt": { "nullable": true, "type": "number" } }, "required": [ "projectId", "scope", "source" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "scope": { "type": "string" }, "source": { "type": "string" } }, "required": [ "projectId", "scope", "source" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "configVersion": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, "required": [ "configVersion", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "restore": { "type": "boolean", "enum": [ false, true ] }, "configVersion": { "type": "number" }, "configChangeCount": { "type": "number" }, "configChanges": { "items": { "type": "object" }, "type": "array" } }, "required": [ "configChangeCount", "configChanges", "configVersion", "projectId", "restore" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "rulesetName": { "type": "string" }, "ruleGroups": { "additionalProperties": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "challenge", "deny" ] } }, "required": [ "active" ], "type": "object" }, "type": "object" } }, "required": [ "projectId", "ruleGroups", "rulesetName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "rulesetName": { "type": "string" }, "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "log", "challenge", "deny" ] } }, "required": [ "active", "projectId", "rulesetName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "action": { "type": "string", "enum": [ "enable", "disable" ] } }, "required": [ "action" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "fromDeploymentId": { "type": "string" }, "toDeploymentId": { "type": "string" }, "projectName": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "fromDeploymentId", "projectId", "projectName", "toDeploymentId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "userId": { "type": "string" }, "integrationId": { "type": "string" }, "configurationId": { "type": "string" }, "integrationSlug": { "type": "string" }, "integrationName": { "type": "string" }, "newOwner": { "nullable": true, "properties": { "abuse": { "properties": { "blockHistory": { "items": { "properties": { "action": { "type": "string", "enum": [ "blocked", "hard-blocked", "soft-blocked", "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "reason": { "type": "string" }, "actor": { "type": "string" }, "statusCode": { "type": "number" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason" ], "type": "object", "description": "Since June 2023" }, "type": "array", "description": "Since June 2023" }, "gitAuthHistory": { "items": { "type": "string" }, "type": "array", "description": "Since March 2022. Helps abuse checks by tracking git auths. Format: `::`" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object", "description": "(scanner history). Since November 2021. First element is newest." }, "type": "array", "description": "(scanner history). Since November 2021. First element is newest." }, "gitLineageBlocks": { "type": "number", "description": "Since September 2023. How often did this owner trigger an actual git lineage deploy block?" }, "gitLineageBlocksDry": { "type": "number", "description": "Since September 2023. How often did this owner trigger a git lineage deploy block dry run?" }, "scanner": { "type": "string", "description": "Since November 2021. Guides the abuse scanner in build container." }, "scheduledUnblockAt": { "type": "string", "description": "Since December 2025. UTC timestamp string of when an auto-unblock is scheduled. Format: \"Wed, 03 Dec 2025 20:32:13 GMT\"" }, "updatedAt": { "type": "number", "description": "Since November 2021" }, "creationUserAgent": { "type": "string" }, "creationIp": { "type": "string" }, "removedPhoneNumbers": { "type": "string" } }, "required": [ "updatedAt" ], "type": "object" }, "acceptanceState": { "type": "string" }, "acceptedAt": { "type": "number" }, "avatar": { "type": "string" }, "billing": { "type": "object", "properties": { "plan": { "type": "string", "enum": [ "pro", "enterprise", "hobby" ] } }, "required": [ "plan" ] }, "blocked": { "nullable": true, "type": "number" }, "blockReason": { "type": "string" }, "created": { "type": "number" }, "createdAt": { "type": "number" }, "credentials": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "vercel", "gitlab", "bitbucket", "google", "apple", "chatgpt", "github-oauth", "github-oauth-limited" ] }, "id": { "type": "string" } }, "required": [ "id", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-oauth-custom-host" ] }, "host": { "type": "string" }, "id": { "type": "string" } }, "required": [ "host", "id", "type" ], "type": "object" } ] }, "type": "array" }, "customerId": { "nullable": true, "type": "string" }, "orbCustomerId": { "nullable": true, "type": "string" }, "dataCache": { "properties": { "excessBillingEnabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deletedAt": { "nullable": true, "type": "number" }, "deploymentSecret": { "type": "string" }, "dismissedTeams": { "items": { "type": "string" }, "type": "array" }, "dismissedToasts": { "items": { "properties": { "name": { "type": "string" }, "dismissals": { "items": { "properties": { "scopeId": { "type": "string" }, "createdAt": { "type": "number" } }, "required": [ "createdAt", "scopeId" ], "type": "object" }, "type": "array" } }, "required": [ "dismissals", "name" ], "type": "object" }, "type": "array" }, "favoriteProjectsAndSpaces": { "items": { "properties": { "teamId": { "type": "string" }, "projectId": { "type": "string" } }, "required": [ "projectId", "teamId" ], "type": "object" }, "type": "array" }, "email": { "type": "string" }, "id": { "type": "string" }, "importFlowGitNamespace": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "importFlowGitNamespaceId": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "importFlowGitProvider": { "nullable": true, "type": "string", "enum": [ "vercel", "github", "github-limited", "github-custom-host", "gitlab", "bitbucket", null ] }, "preferredScopesAndGitNamespaces": { "items": { "properties": { "scopeId": { "type": "string" }, "gitNamespaceId": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, "required": [ "gitNamespaceId", "scopeId" ], "type": "object" }, "type": "array" }, "isDomainReseller": { "type": "boolean", "enum": [ false, true ] }, "isZeitPub": { "type": "boolean", "enum": [ false, true ] }, "testAccountExpiresAt": { "type": "number" }, "maxActiveSlots": { "type": "number" }, "name": { "type": "string" }, "phoneNumber": { "type": "string" }, "platformVersion": { "nullable": true, "type": "number" }, "preventAutoBlocking": { "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "projectDomainsLimit": { "type": "number", "description": "Overrides our DEFAULT project domains limit per account or per project." }, "remoteCaching": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "Represents configuration for remote caching" }, "removedAliasesAt": { "type": "number" }, "removedBillingSubscriptionAt": { "type": "number" }, "removedConfigurationsAt": { "type": "number" }, "removedDeploymentsAt": { "type": "number" }, "removedDomiansAt": { "type": "number" }, "removedEventsAt": { "type": "number" }, "removedProjectsAt": { "type": "number" }, "removedSecretsAt": { "type": "number" }, "removedSharedEnvVarsAt": { "type": "number" }, "removedEdgeConfigsAt": { "type": "number" }, "resourceConfig": { "properties": { "nodeType": { "type": "string" }, "concurrentBuilds": { "type": "number" }, "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "buildEntitlements": { "properties": { "enhancedBuilds": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "awsAccountType": { "type": "string" }, "awsAccountIds": { "items": { "type": "string" }, "type": "array" }, "cfZoneName": { "type": "string" }, "imageOptimizationType": { "type": "string" }, "edgeConfigs": { "type": "number" }, "edgeConfigSize": { "type": "number" }, "edgeFunctionMaxSizeBytes": { "type": "number" }, "edgeFunctionExecutionTimeoutMs": { "type": "number" }, "serverlessFunctionMaxMemorySize": { "type": "number" }, "kvDatabases": { "type": "number" }, "postgresDatabases": { "type": "number" }, "blobStores": { "type": "number" }, "integrationStores": { "type": "number" }, "cronJobsPerProject": { "type": "number" }, "microfrontendGroupsPerTeam": { "type": "number" }, "microfrontendProjectsPerGroup": { "type": "number" }, "flagsExplorerOverridesThreshold": { "type": "number" }, "flagsExplorerUnlimitedOverrides": { "type": "boolean", "enum": [ false, true ] }, "customEnvironmentsPerProject": { "type": "number" }, "buildMachine": { "properties": { "default": { "type": "string", "enum": [ "enhanced", "turbo", "standard", "elastic" ] }, "purchaseType": { "type": "string", "enum": [ "enhanced", "turbo", "standard" ] }, "defaultPurchaseType": { "type": "string", "enum": [ "enhanced", "turbo", "standard" ] }, "cores": { "type": "number" }, "memory": { "type": "number" }, "machineSelectionType": { "type": "string", "enum": [ "fixed", "elastic" ] } }, "type": "object" }, "security": { "properties": { "customRules": { "type": "number" }, "ipBlocks": { "type": "number" }, "ipBypass": { "type": "number" }, "rateLimit": { "type": "number" } }, "type": "object" }, "bulkRedirectsFreeLimitOverride": { "type": "number" } }, "type": "object" }, "resourceLimits": { "additionalProperties": { "properties": { "max": { "type": "number" }, "duration": { "type": "number" } }, "required": [ "duration", "max" ], "type": "object" }, "type": "object", "description": "User | Team resource limits" }, "activeDashboardViews": { "items": { "properties": { "scopeId": { "type": "string" }, "viewPreference": { "nullable": true, "type": "string", "enum": [ "list", "cards", null ] }, "favoritesViewPreference": { "nullable": true, "type": "string", "enum": [ "open", "closed", null ] }, "recentsViewPreference": { "nullable": true, "type": "string", "enum": [ "open", "closed", null ] } }, "required": [ "scopeId" ], "type": "object" }, "type": "array" }, "secondaryEmails": { "items": { "properties": { "email": { "type": "string" }, "verified": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "email", "verified" ], "type": "object" }, "type": "array" }, "emailDomains": { "items": { "type": "string" }, "type": "array" }, "emailNotifications": { "properties": { "rules": { "additionalProperties": { "properties": { "email": { "type": "string" } }, "required": [ "email" ], "type": "object" }, "type": "object" } }, "type": "object" }, "siftScore": { "type": "number" }, "siftScores": { "additionalProperties": { "properties": { "score": { "type": "number" }, "reasons": { "items": { "properties": { "name": { "type": "string" }, "value": { "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" } }, "required": [ "reasons", "score" ], "type": "object" }, "type": "object" }, "siftRoute": { "properties": { "name": { "type": "string", "enum": [ "string" ] } }, "required": [ "name" ], "type": "object" }, "sfdcId": { "type": "string" }, "softBlock": { "nullable": true, "properties": { "blockedAt": { "type": "number" }, "reason": { "type": "string", "enum": [ "ENTERPRISE_UNPAID_INVOICE", "SUBSCRIPTION_CANCELED", "SUBSCRIPTION_EXPIRED", "UNPAID_INVOICE", "ENTERPRISE_TRIAL_ENDED", "FAIR_USE_LIMITS_EXCEEDED", "BLOCKED_FOR_PLATFORM_ABUSE" ] }, "blockedDueToOverageType": { "type": "string", "enum": [ "analyticsUsage", "artifacts", "bandwidth", "blobTotalAdvancedRequests", "blobTotalAvgSizeInBytes", "blobTotalGetResponseObjectSizeInBytes", "blobTotalSimpleRequests", "connectDataTransfer", "dataCacheRead", "dataCacheWrite", "edgeConfigRead", "edgeConfigWrite", "edgeFunctionExecutionUnits", "edgeMiddlewareInvocations", "edgeRequestAdditionalCpuDuration", "edgeRequest", "elasticConcurrencyBuildSlots", "fastDataTransfer", "fastOriginTransfer", "fluidCpuDuration", "fluidDuration", "functionDuration", "functionInvocation", "imageOptimizationCacheRead", "imageOptimizationCacheWrite", "imageOptimizationTransformation", "logDrainsVolume", "monitoringMetric", "blobDataTransfer", "observabilityEvent", "onDemandConcurrencyMinutes", "runtimeCacheRead", "runtimeCacheWrite", "serverlessFunctionExecution", "sourceImages", "wafOwaspExcessBytes", "wafOwaspRequests", "wafRateLimitRequest", "webAnalyticsEvent" ] } }, "required": [ "blockedAt", "reason" ], "type": "object" }, "stagingPrefix": { "type": "string" }, "sysToken": { "type": "string" }, "teams": { "items": { "properties": { "createdAt": { "type": "number" }, "teamId": { "type": "string" }, "role": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "confirmed": { "type": "boolean", "enum": [ true ] }, "confirmedAt": { "type": "number" }, "accessRequestedAt": { "type": "number" }, "teamRoles": { "items": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "type": "array" }, "teamPermissions": { "items": { "type": "string", "enum": [ "IntegrationManager", "CreateProject", "FullProductionDeployment", "UsageViewer", "EnvVariableManager", "EnvironmentManager", "V0Builder", "V0Chatter", "V0Viewer" ] }, "type": "array" }, "created": { "type": "number" }, "joinedFrom": { "properties": { "origin": { "type": "string", "enum": [ "link", "import", "teams", "saml", "github", "gitlab", "bitbucket", "mail", "dsync", "feedback", "organization-teams", "nsnb-auto-approve", "nsnb-hobby-upgrade", "nsnb-request-access", "nsnb-viewer-upgrade", "nsnb-invite", "nsnb-redeploy", "nsnb-redeploy-attribution-card" ] }, "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" } }, "required": [ "confirmed", "confirmedAt", "created", "createdAt", "role", "teamId" ], "type": "object" }, "type": "array", "description": "A helper that allows to describe a relationship attribute. It receives the shape of a relationship plus the foreignKey name to make it mandatory in the resulting type." }, "trialTeamIds": { "items": { "type": "string" }, "type": "array", "description": "Introduced 2022-04-12 An array of teamIds (for trial teams created after 2022-04-01), created by the user in question. Used in determining whether the team has a trial available in utils/api-teams/user-has-trial-available.ts." }, "maxTrials": { "type": "number", "description": "Introduced 2022-04-19 Number of maximum trials to allocate to a user. When undefined, defaults to MAX_TRIALS in utils/api-teams/user-has-trial-available.ts. This is set to trialTeamIds + 1 by services/api-backoffice/src/handlers/add-additional-trial.ts." }, "trialTeamId": { "type": "string", "description": "Deprecated on 2022-04-12 in favor of trialTeamIds and using utils/api-teams/user-has-trial-available.ts." }, "type": { "type": "string", "enum": [ "user" ] }, "usageAlerts": { "nullable": true, "properties": { "warningAt": { "nullable": true, "type": "number" }, "blockingAt": { "nullable": true, "type": "number" } }, "type": "object", "description": "Contains the timestamps when a user was notified about their usage" }, "overageUsageAlerts": { "properties": { "analyticsUsage": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "artifacts": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "bandwidth": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "blobTotalAdvancedRequests": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "blobTotalAvgSizeInBytes": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "blobTotalGetResponseObjectSizeInBytes": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "blobTotalSimpleRequests": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "connectDataTransfer": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "dataCacheRead": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "dataCacheWrite": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "edgeConfigRead": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "edgeConfigWrite": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "edgeFunctionExecutionUnits": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "edgeMiddlewareInvocations": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "edgeRequestAdditionalCpuDuration": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "edgeRequest": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "elasticConcurrencyBuildSlots": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "fastDataTransfer": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "fastOriginTransfer": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "fluidCpuDuration": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "fluidDuration": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "functionDuration": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "functionInvocation": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "imageOptimizationCacheRead": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "imageOptimizationCacheWrite": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "imageOptimizationTransformation": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "logDrainsVolume": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "monitoringMetric": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "blobDataTransfer": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "observabilityEvent": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "onDemandConcurrencyMinutes": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "runtimeCacheRead": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "runtimeCacheWrite": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "serverlessFunctionExecution": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "sourceImages": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "wafOwaspExcessBytes": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "wafOwaspRequests": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "wafRateLimitRequest": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" }, "webAnalyticsEvent": { "properties": { "currentThreshold": { "type": "number" }, "warningAt": { "nullable": true, "type": "number" }, "blockedAt": { "nullable": true, "type": "number" } }, "required": [ "currentThreshold" ], "type": "object" } }, "type": "object" }, "overageMetadata": { "properties": { "firstTimeOnDemandNotificationSentAt": { "type": "number", "description": "Tracks if the first time on-demand overage email has been sent." }, "dailyOverageSummaryEmailSentAt": { "type": "number", "description": "Tracks the last time we sent a daily summary email." }, "weeklyOverageSummaryEmailSentAt": { "type": "number", "description": "Tracks the last time we sent a weekly summary email." }, "overageSummaryExpiresAt": { "type": "number", "description": "Tracks when the overage summary email will stop auto-sending. We currently lock the user into email for a month after the last on-demand usage." }, "increasedOnDemandEmailSentAt": { "type": "number", "description": "Tracks the last time we sent a increased on-demand email." }, "increasedOnDemandEmailAttemptedAt": { "type": "number", "description": "Tracks the last time we attempted to send an increased on-demand email. This check is to limit the number of attempts per day." } }, "type": "object", "description": "Contains the timestamps for usage summary emails." }, "username": { "type": "string" }, "updatedAt": { "type": "number" }, "enablePreviewFeedback": { "type": "string", "enum": [ "default", "on", "off", "on-force", "off-force", "default-force" ], "description": "Whether the Vercel Toolbar is enabled for preview deployments." }, "featureBlocks": { "properties": { "webAnalytics": { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "limits_exceeded", "hard_blocked" ] }, "graceEmailSentAt": { "type": "number" } }, "required": [ "blockReason", "updatedAt" ], "type": "object" }, "monitoring": { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "limits_exceeded", "hard_blocked" ] }, "blockType": { "type": "string", "enum": [ "soft", "hard" ] } }, "required": [ "blockReason", "blockType", "updatedAt" ], "type": "object", "description": "A soft block indicates a temporary pause in data collection (ex limit exceeded for the current cycle) A hard block indicates a stoppage in data collection that requires manual intervention (ex upgrading a pro trial)" }, "observabilityPlus": { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "limits_exceeded", "hard_blocked" ] }, "blockType": { "type": "string", "enum": [ "soft", "hard" ] } }, "required": [ "blockReason", "blockType", "updatedAt" ], "type": "object" }, "dataCache": { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "limits_exceeded", "hard_blocked" ] } }, "required": [ "blockReason", "updatedAt" ], "type": "object" }, "imageOptimizationTransformation": { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "limits_exceeded", "hard_blocked" ] } }, "required": [ "blockReason", "updatedAt" ], "type": "object" }, "sourceImages": { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "limits_exceeded", "hard_blocked" ] } }, "required": [ "blockReason", "updatedAt" ], "type": "object" }, "blob": { "oneOf": [ { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "limits_exceeded" ] }, "overageReason": { "type": "string", "enum": [ "analyticsUsage", "artifacts", "bandwidth", "blobTotalAdvancedRequests", "blobTotalAvgSizeInBytes", "blobTotalGetResponseObjectSizeInBytes", "blobTotalSimpleRequests", "connectDataTransfer", "dataCacheRead", "dataCacheWrite", "edgeConfigRead", "edgeConfigWrite", "edgeFunctionExecutionUnits", "edgeMiddlewareInvocations", "edgeRequestAdditionalCpuDuration", "edgeRequest", "elasticConcurrencyBuildSlots", "fastDataTransfer", "fastOriginTransfer", "fluidCpuDuration", "fluidDuration", "functionDuration", "functionInvocation", "imageOptimizationCacheRead", "imageOptimizationCacheWrite", "imageOptimizationTransformation", "logDrainsVolume", "monitoringMetric", "blobDataTransfer", "observabilityEvent", "onDemandConcurrencyMinutes", "runtimeCacheRead", "runtimeCacheWrite", "serverlessFunctionExecution", "sourceImages", "wafOwaspExcessBytes", "wafOwaspRequests", "wafRateLimitRequest", "webAnalyticsEvent" ] } }, "required": [ "blockReason", "overageReason", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "hard_blocked" ] } }, "required": [ "blockReason", "updatedAt" ], "type": "object" } ] }, "postgres": { "oneOf": [ { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "limits_exceeded" ] }, "overageReason": { "type": "string", "enum": [ "analyticsUsage", "artifacts", "bandwidth", "blobTotalAdvancedRequests", "blobTotalAvgSizeInBytes", "blobTotalGetResponseObjectSizeInBytes", "blobTotalSimpleRequests", "connectDataTransfer", "dataCacheRead", "dataCacheWrite", "edgeConfigRead", "edgeConfigWrite", "edgeFunctionExecutionUnits", "edgeMiddlewareInvocations", "edgeRequestAdditionalCpuDuration", "edgeRequest", "elasticConcurrencyBuildSlots", "fastDataTransfer", "fastOriginTransfer", "fluidCpuDuration", "fluidDuration", "functionDuration", "functionInvocation", "imageOptimizationCacheRead", "imageOptimizationCacheWrite", "imageOptimizationTransformation", "logDrainsVolume", "monitoringMetric", "blobDataTransfer", "observabilityEvent", "onDemandConcurrencyMinutes", "runtimeCacheRead", "runtimeCacheWrite", "serverlessFunctionExecution", "sourceImages", "wafOwaspExcessBytes", "wafOwaspRequests", "wafRateLimitRequest", "webAnalyticsEvent" ] } }, "required": [ "blockReason", "overageReason", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "hard_blocked" ] } }, "required": [ "blockReason", "updatedAt" ], "type": "object" } ] }, "redis": { "oneOf": [ { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "limits_exceeded" ] }, "overageReason": { "type": "string", "enum": [ "analyticsUsage", "artifacts", "bandwidth", "blobTotalAdvancedRequests", "blobTotalAvgSizeInBytes", "blobTotalGetResponseObjectSizeInBytes", "blobTotalSimpleRequests", "connectDataTransfer", "dataCacheRead", "dataCacheWrite", "edgeConfigRead", "edgeConfigWrite", "edgeFunctionExecutionUnits", "edgeMiddlewareInvocations", "edgeRequestAdditionalCpuDuration", "edgeRequest", "elasticConcurrencyBuildSlots", "fastDataTransfer", "fastOriginTransfer", "fluidCpuDuration", "fluidDuration", "functionDuration", "functionInvocation", "imageOptimizationCacheRead", "imageOptimizationCacheWrite", "imageOptimizationTransformation", "logDrainsVolume", "monitoringMetric", "blobDataTransfer", "observabilityEvent", "onDemandConcurrencyMinutes", "runtimeCacheRead", "runtimeCacheWrite", "serverlessFunctionExecution", "sourceImages", "wafOwaspExcessBytes", "wafOwaspRequests", "wafRateLimitRequest", "webAnalyticsEvent" ] } }, "required": [ "blockReason", "overageReason", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "hard_blocked" ] } }, "required": [ "blockReason", "updatedAt" ], "type": "object" } ] }, "microfrontendsRequest": { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "limits_exceeded", "hard_blocked" ] } }, "required": [ "blockReason", "updatedAt" ], "type": "object" }, "workflowStorage": { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "limits_exceeded", "hard_blocked" ] } }, "required": [ "blockReason", "updatedAt" ], "type": "object" }, "workflowStep": { "properties": { "updatedAt": { "type": "number" }, "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "blockReason": { "type": "string", "enum": [ "admin_override", "limits_exceeded", "hard_blocked" ] } }, "required": [ "blockReason", "updatedAt" ], "type": "object" } }, "type": "object", "description": "Information about which features are blocked for a user. Blocks can be either soft (the user can still access the feature, but with a warning, e.g. prompting an upgrade) or hard (the user cannot access the feature at all)." }, "defaultTeamId": { "type": "string" }, "version": { "type": "string", "enum": [ "northstar" ] }, "isMFAEnforced": { "type": "boolean", "enum": [ false, true ], "description": "Whether MFA is enforced for this user. Set to true when the user has a" }, "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": [ "endTime", "integrationClients", "integrationConfigurations", "projects", "startTime", "stores", "teamId" ], "type": "object", "description": "An archive of information about the Northstar migration, derived from the old (deprecated) property, `northstarMigrationEvents`." }, "opportunityId": { "type": "string", "description": "The salesforce opportunity ID that this user is linked to. This is used to automatically associate a team of the user's choosing with the opportunity." }, "mfaConfiguration": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "enabledAt": { "type": "number" }, "recoveryCodes": { "items": { "type": "string" }, "type": "array" }, "totp": { "properties": { "secret": { "type": "string" }, "createdAt": { "type": "number" } }, "required": [ "createdAt", "secret" ], "type": "object" }, "history": { "items": { "properties": { "action": { "type": "string", "enum": [ "enabled", "disabled" ], "description": "The action that occurred" }, "timestamp": { "nullable": true, "type": "number", "description": "Unix timestamp (milliseconds) when the change occurred. May be null for events that occurred before history tracking was implemented." }, "method": { "type": "string", "enum": [ "totp", "passkey", "unknown", "user_disabled", "admin_removal" ], "description": "Method used for the state change - 'totp': User set up TOTP authenticator - 'passkey': User registered a passkey - 'user_disabled': User disabled their own MFA - 'admin_removal': Admin removed MFA via backoffice - 'unknown': Method unknown (for pre-tracking events)" }, "actorId": { "type": "string", "description": "ID of the actor who made the change - For user actions: the user's own ID - For admin actions: the admin's user ID" }, "actorType": { "type": "string", "enum": [ "user", "admin" ], "description": "Type of actor" }, "reason": { "type": "string", "description": "Optional: Additional context or reason e.g., \"Account recovery request - ticket #12345\"" } }, "required": [ "action", "actorId", "actorType", "method", "timestamp" ], "type": "object", "description": "History of MFA state changes (enabled/disabled events). Most recent events first." }, "type": "array", "description": "History of MFA state changes (enabled/disabled events). Most recent events first." } }, "required": [ "enabled", "recoveryCodes" ], "type": "object", "description": "MFA configuration. When enabled, the user will be required to provide a second factor of authentication when logging in." }, "isEnterpriseManaged": { "type": "boolean", "enum": [ false, true ], "description": "Indicates that the underlying user entity is a managed user for the enterprise it's associated with The intention is that this field is only set to true for users that are provisioned by the enterprise which means that the domain associated with the user's email is the same domain associated with the team Allowing us to query information about the user's team at login time through the domain verification service" }, "linkedManagedAccountId": { "type": "string", "description": "On a personal account, points to the managed account created during EMU account separation. Set by the split utility when an existing team member is converted into a separate managed account." }, "linkedPersonalAccountId": { "type": "string", "description": "On a managed account, points back to the personal account it was split from during EMU account separation. When set together with `isEnterpriseManaged`, the managed account's email is excluded from global secondary-key indexing so it doesn't conflict with the personal account's email." } }, "required": [ "billing", "blocked", "createdAt", "deploymentSecret", "email", "id", "platformVersion", "stagingPrefix", "sysToken", "type", "updatedAt", "username", "version" ], "type": "object" } }, "required": [ "configurationId", "integrationId", "integrationSlug", "newOwner", "userId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" }, "integrationSlug": { "type": "string" }, "integrationName": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "confirmedScopes": { "items": { "type": "string" }, "type": "array" } }, "required": [ "configurationId", "confirmedScopes", "integrationId", "integrationName", "integrationSlug", "ownerId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "configurations": { "items": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" }, "integrationSlug": { "type": "string" }, "integrationName": { "type": "string" } }, "required": [ "configurationId", "integrationId", "integrationSlug" ], "type": "object" }, "type": "array" }, "ownerId": { "type": "string" } }, "required": [ "configurations", "ownerId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" }, "integrationSlug": { "type": "string" }, "integrationName": { "type": "string" }, "ownerId": { "type": "string" }, "billingPlanId": { "type": "string" }, "billingPlanName": { "type": "string" } }, "required": [ "billingPlanId", "configurationId", "integrationId", "integrationName", "integrationSlug", "ownerId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" }, "integrationSlug": { "type": "string" }, "integrationName": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "all" ] } ] } }, "required": [ "configurationId", "integrationId", "integrationName", "integrationSlug", "ownerId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "integrationId": { "type": "string" }, "integrationSlug": { "type": "string" }, "integrationName": { "type": "string" } }, "required": [ "integrationId", "integrationName", "integrationSlug" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "logDrainUrl": { "nullable": true, "type": "string" }, "integrationName": { "type": "string" } }, "required": [ "logDrainUrl" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "logDrainUrl": { "type": "string" }, "integrationName": { "type": "string" } }, "required": [ "logDrainUrl" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "userAgent": { "type": "string" }, "geolocation": { "nullable": true, "properties": { "city": { "properties": { "names": { "properties": { "en": { "type": "string" } }, "required": [ "en" ], "type": "object" } }, "required": [ "names" ], "type": "object" }, "country": { "properties": { "names": { "properties": { "en": { "type": "string" } }, "required": [ "en" ], "type": "object" } }, "required": [ "names" ], "type": "object" }, "most_specific_subdivision": { "properties": { "names": { "properties": { "en": { "type": "string" } }, "required": [ "en" ], "type": "object" } }, "required": [ "names" ], "type": "object" }, "regionName": { "type": "string" } }, "required": [ "country" ], "type": "object" }, "env": { "type": "string" }, "os": { "type": "string" }, "username": { "type": "string" }, "ssoType": { "type": "string" }, "factors": { "oneOf": [ { "items": { "oneOf": [ { "properties": { "origin": { "type": "string", "enum": [ "email", "saml", "github", "gitlab", "bitbucket", "google", "apple", "chatgpt", "webauthn", "otp", "invite", "otp-link", "magic-link" ] }, "username": { "type": "string" }, "teamId": { "type": "string" }, "legacy": { "type": "boolean", "enum": [ false, true ] }, "ssoType": { "type": "string" } }, "required": [ "origin" ], "type": "object" } ] }, "maxItems": 1, "minItems": 1, "type": "array" }, { "items": { "oneOf": [ { "properties": { "origin": { "type": "string", "enum": [ "email", "saml", "github", "gitlab", "bitbucket", "google", "apple", "chatgpt", "webauthn", "otp", "invite", "otp-link", "magic-link" ] }, "username": { "type": "string" }, "teamId": { "type": "string" }, "legacy": { "type": "boolean", "enum": [ false, true ] }, "ssoType": { "type": "string" } }, "required": [ "origin" ], "type": "object" }, { "properties": { "origin": { "type": "string", "enum": [ "totp", "webauthn", "recovery-code" ] } }, "required": [ "origin" ], "type": "object" } ] }, "maxItems": 2, "minItems": 2, "type": "array" } ] }, "viaOTP": { "type": "boolean", "enum": [ false, true ] }, "viaGithub": { "type": "boolean", "enum": [ false, true ] }, "viaGitlab": { "type": "boolean", "enum": [ false, true ] }, "viaBitbucket": { "type": "boolean", "enum": [ false, true ] }, "viaGoogle": { "type": "boolean", "enum": [ false, true ] }, "viaApple": { "type": "boolean", "enum": [ false, true ] }, "viaSamlSso": { "type": "boolean", "enum": [ false, true ] }, "viaPasskey": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "toDeploymentId": { "type": "string" }, "projectName": { "type": "string" } }, "required": [ "projectId", "projectName", "toDeploymentId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "fallbackEnvironment": { "type": "string" }, "prev": { "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, "fallbackEnvironment": { "type": "string" } }, "required": [ "fallbackEnvironment", "name", "slug" ], "type": "object" } }, "required": [ "id", "prev" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "group": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object" } }, "required": [ "group", "project" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "routeObservabilityToThisProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether observability data should be routed to this microfrontend project or a root project." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "enum": [ false, true ], "description": "Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] } }, "required": [ "id", "name" ], "type": "object" }, "prev": { "properties": { "project": { "properties": { "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "routeObservabilityToThisProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether observability data should be routed to this microfrontend project or a root project." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "enum": [ false, true ], "description": "Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] } }, "type": "object" } }, "required": [ "project" ], "type": "object" }, "group": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object" } }, "required": [ "group", "prev", "project" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectName": { "type": "string" } }, "required": [ "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "ownerId": { "type": "string" }, "source": { "type": "string" }, "cause": { "type": "string" }, "blockReason": { "type": "string" }, "siftRoute": { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" } }, "required": [ "cause", "ownerId", "source" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "ownerId": { "type": "string" }, "source": { "type": "string" }, "cause": { "type": "string" }, "reason": { "nullable": true, "type": "string" } }, "required": [ "cause", "ownerId", "source" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "ownerId": { "type": "string" }, "source": { "type": "string" }, "cause": { "type": "string" }, "blockReason": { "type": "string" } }, "required": [ "cause", "ownerId", "source" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "ownerId": { "type": "string" }, "source": { "type": "string" }, "cause": { "type": "string" } }, "required": [ "cause", "ownerId", "source" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "previous": { "nullable": true, "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "mode": { "type": "string" }, "enforcePercentage": { "type": "number" } }, "required": [ "enabled", "enforcePercentage", "mode" ], "type": "object" }, "next": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "mode": { "type": "string" }, "enforcePercentage": { "type": "number" } }, "required": [ "enabled", "enforcePercentage", "mode" ], "type": "object" } }, "required": [ "next", "previous", "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "headerName": { "type": "string" }, "previousStatus": { "type": "string" } }, "required": [ "headerName", "previousStatus", "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "url": { "type": "string" }, "previousStatus": { "type": "string" } }, "required": [ "previousStatus", "projectId", "url" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "type": { "type": "string", "enum": [ "script" ] }, "resourceUrl": { "type": "string" } }, "required": [ "projectId", "resourceUrl", "type" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "type": { "type": "string", "enum": [ "header" ] }, "headerName": { "type": "string" } }, "required": [ "headerName", "projectId", "type" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "oldName": { "type": "string" }, "newName": { "type": "string" } }, "required": [ "newName", "oldName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "plan": { "type": "string" }, "removedUsers": { "additionalProperties": { "properties": { "role": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "confirmed": { "type": "boolean", "enum": [ false, true ] }, "confirmedAt": { "type": "number" }, "joinedFrom": { "properties": { "origin": { "type": "string", "enum": [ "link", "import", "teams", "saml", "github", "gitlab", "bitbucket", "mail", "dsync", "feedback", "organization-teams", "nsnb-auto-approve", "nsnb-hobby-upgrade", "nsnb-request-access", "nsnb-viewer-upgrade", "nsnb-invite", "nsnb-redeploy", "nsnb-redeploy-attribution-card" ] }, "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" } }, "required": [ "confirmed", "role" ], "type": "object" }, "type": "object" }, "prevPlan": { "type": "string" }, "priorPlan": { "type": "string" }, "isDowngrade": { "type": "boolean", "enum": [ false, true ] }, "userAgent": { "type": "string" }, "isReactivate": { "type": "boolean", "enum": [ false, true ] }, "isTrialUpgrade": { "type": "boolean", "enum": [ false, true ] }, "automated": { "type": "boolean", "enum": [ false, true ], "description": "Whether the plan change was system-initiated rather than human-initiated." }, "reason": { "type": "string", "description": "Why the plan changed. For downgrades, this is a {@link DowngradeReason} from `@api/pubsub-types` (e.g. `user_downgrade`, `trial_expired`)." }, "timestamp": { "type": "number" }, "removedMemberCount": { "type": "number" } }, "required": [ "plan" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "price": { "type": "number" }, "currency": { "type": "string" }, "enabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "previewDeploymentSuffix": { "nullable": true, "type": "string" }, "previousPreviewDeploymentSuffix": { "nullable": true, "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "privateLinkEndpoint": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "projectId": { "type": "string" } }, "required": [ "privateLinkEndpoint", "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "privateLinkEndpoint": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "environmentIds": { "items": { "type": "string" }, "type": "array" }, "privateDnsNames": { "items": { "type": "string" }, "type": "array" } }, "required": [ "id", "name" ], "type": "object" }, "projectId": { "type": "string" }, "previousEndpoint": { "properties": { "name": { "type": "string" }, "environmentIds": { "items": { "type": "string" }, "type": "array" }, "privateDnsNames": { "items": { "type": "string" }, "type": "array" } }, "required": [ "name" ], "type": "object" } }, "required": [ "previousEndpoint", "privateLinkEndpoint", "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectName": { "type": "string" }, "branch": { "type": "string" } }, "required": [ "branch", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "directoryListing", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectName": { "type": "string" }, "projectId": { "type": "string" }, "projectAnalytics": { "nullable": true, "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": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "prevProjectAnalytics": { "nullable": true, "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": [ "disabledAt", "enabledAt", "id" ], "type": "object" } }, "required": [ "prevProjectAnalytics", "projectAnalytics", "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectName": { "type": "string" }, "projectId": { "type": "string" }, "projectAnalytics": { "additionalProperties": true, "type": "object" }, "prevProjectAnalytics": { "nullable": true, "additionalProperties": true, "type": "object" } }, "required": [ "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "action": { "type": "string", "enum": [ "updated", "enabled", "disabled", "regenerated" ] }, "isEnvVar": { "type": "boolean", "enum": [ false, true ] }, "note": { "type": "string" } }, "required": [ "action", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enableAffectedProjectsDeployments", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enableExternalRewriteCaching", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previous": { "type": "object" }, "next": { "type": "object" } }, "required": [ "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "productionDeploymentsFastLane": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "productionDeploymentsFastLane", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "projectId", "projectName", "sourceFilesOutsideRootDirectory" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previousBuildMachineType": { "type": "string" }, "nextBuildMachineType": { "type": "string" }, "previousBuildMachineSelection": { "type": "string" }, "nextBuildMachineSelection": { "type": "string" }, "isSystemInitiated": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "nextBuildMachineSelection", "nextBuildMachineType", "previousBuildMachineSelection", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "certId": { "type": "string" }, "origin": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "target": { "items": { "type": "string" }, "type": "array" }, "updated": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "oldConnectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "production", "preview" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "newConnectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "production", "preview" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" } }, "required": [ "id", "newConnectConfigurations", "oldConnectConfigurations" ], "type": "object" } }, "required": [ "project", "team" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectName": { "type": "string" }, "projectId": { "type": "string" } }, "required": [ "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "action": { "type": "string", "enum": [ "enabled", "disabled" ] } }, "required": [ "action", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "clientId": { "type": "string" }, "projectId": { "type": "string" }, "projectName": { "type": "string" } }, "required": [ "clientId", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "next": { "properties": { "clientId": { "type": "string" }, "cookieName": { "type": "string" }, "deploymentType": { "type": "string" }, "issuer": { "type": "string" } }, "required": [ "clientId", "deploymentType", "issuer" ], "type": "object" }, "previous": { "properties": { "clientId": { "type": "string" }, "cookieName": { "type": "string" }, "deploymentType": { "type": "string" }, "issuer": { "type": "string" } }, "required": [ "clientId", "deploymentType", "issuer" ], "type": "object" }, "projectId": { "type": "string" }, "projectName": { "type": "string" }, "updates": { "items": { "type": "string", "enum": [ "clientId", "clientSecret", "cookieName", "deploymentType", "issuer" ] }, "type": "array" } }, "required": [ "next", "previous", "projectId", "projectName", "updates" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" }, "ownerId": { "type": "string" } }, "required": [ "name", "ownerId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "oldElasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueueConfiguration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] }, "oldBuildQueueConfiguration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "required": [ "elasticConcurrencyEnabled", "oldElasticConcurrencyEnabled", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "autoAssignCustomDomains", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previewDeploymentsEnabled": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "previewDeploymentsEnabled", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "customEnvironmentId": { "type": "string" }, "customEnvironmentSlug": { "type": "string" }, "previous": { "properties": { "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" } }, "type": "object" }, "next": { "properties": { "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "startsWith", "equals" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" } }, "type": "object" } }, "required": [ "customEnvironmentId", "customEnvironmentSlug", "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "customEnvironmentId": { "type": "string" }, "customEnvironmentSlug": { "type": "string" } }, "required": [ "customEnvironmentId", "customEnvironmentSlug", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectName": { "type": "string" }, "projectId": { "type": "string" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enableFunctionsBeta", "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previous": { "properties": { "functionDefaultTimeout": { "nullable": true, "type": "number" } }, "required": [ "functionDefaultTimeout" ], "type": "object" }, "next": { "properties": { "functionDefaultTimeout": { "type": "number" } }, "required": [ "functionDefaultTimeout" ], "type": "object" } }, "required": [ "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previous": { "properties": { "functionDefaultMemoryType": { "nullable": true, "type": "string" } }, "required": [ "functionDefaultMemoryType" ], "type": "object" }, "next": { "properties": { "functionDefaultMemoryType": { "type": "string" } }, "required": [ "functionDefaultMemoryType" ], "type": "object" } }, "required": [ "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previous": { "properties": { "functionDefaultRegions": { "nullable": true, "items": { "type": "string" }, "type": "array" } }, "required": [ "functionDefaultRegions" ], "type": "object" }, "next": { "properties": { "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "functionDefaultRegions" ], "type": "object" } }, "required": [ "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previous": { "properties": { "functionZeroConfigFailover": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] } }, "required": [ "functionZeroConfigFailover" ], "type": "object" }, "next": { "properties": { "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "functionZeroConfigFailover" ], "type": "object" } }, "required": [ "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previewDeploymentSuffix": { "nullable": true, "type": "string" } }, "required": [ "previewDeploymentSuffix", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "newProjectName": { "type": "string" } }, "required": [ "newProjectName", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previous": { "properties": { "gitProvider": { "type": "string", "enum": [ "vercel", "github", "github-limited", "github-custom-host", "gitlab", "bitbucket" ] }, "gitRepoId": { "type": "string" }, "gitRepositoryName": { "type": "string" } }, "required": [ "gitProvider", "gitRepoId", "gitRepositoryName" ], "type": "object" }, "next": { "properties": { "gitProvider": { "type": "string", "enum": [ "vercel", "github", "github-limited", "github-custom-host", "gitlab", "bitbucket" ] }, "gitRepoId": { "type": "string" }, "gitRepositoryName": { "type": "string" } }, "required": [ "gitProvider", "gitRepoId", "gitRepositoryName" ], "type": "object" } }, "required": [ "next", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "gitProvider": { "type": "string", "enum": [ "vercel", "github", "github-limited", "github-custom-host", "gitlab", "bitbucket" ] }, "gitRepoId": { "type": "string" }, "gitRepositoryName": { "type": "string" } }, "required": [ "gitProvider", "gitRepoId", "gitRepositoryName", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "onPullRequest": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "onPullRequest", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "onCommit": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "onCommit", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "disableRepositoryDispatchEvents": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "disableRepositoryDispatchEvents", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "createDeployments": { "type": "string", "enum": [ "enabled", "disabled" ] } }, "required": [ "createDeployments", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "requireVerifiedCommits": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] } }, "required": [ "projectId", "projectName", "requireVerifiedCommits" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "requireVerifiedCommits" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "gitCommitStatus", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "gitLFS": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "gitLFS", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "consolidatedGitCommitStatus": { "nullable": true, "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "propagateFailures": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "propagateFailures" ], "type": "object" } }, "required": [ "consolidatedGitCommitStatus", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previous": { "properties": { "commandForIgnoringBuildStep": { "type": "string" } }, "type": "object" }, "next": { "properties": { "commandForIgnoringBuildStep": { "type": "string" } }, "type": "object" } }, "required": [ "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "domain": { "type": "string" }, "target": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number" }, "gitBranch": { "nullable": true, "type": "string" }, "configuredBy": { "type": "string" } }, "required": [ "domain", "gitBranch", "projectId", "projectName", "redirect", "redirectStatusCode", "target" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "domain": { "type": "string" }, "target": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number" } }, "required": [ "domain", "projectId", "projectName", "target" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "oldProjectId": { "type": "string" }, "oldProjectName": { "type": "string" }, "newProjectId": { "type": "string" }, "newProjectName": { "type": "string" }, "domain": { "type": "string" } }, "required": [ "domain", "newProjectId", "newProjectName", "oldProjectId", "oldProjectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "domain": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number" } }, "required": [ "domain", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projects": { "items": { "properties": { "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ] }, "membershipCreatedAt": { "type": "number" } }, "required": [ "membershipCreatedAt", "projectId", "role" ], "type": "object" }, "type": "array" }, "teamMembership": { "properties": { "uid": { "type": "string" }, "username": { "type": "string" } }, "required": [ "uid" ], "type": "object" }, "directoryType": { "type": "string" } }, "required": [ "projects" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "target": { "type": "string" }, "domain": { "type": "string" }, "configuredBy": { "nullable": true, "type": "string" }, "prevConfiguredBy": { "nullable": true, "type": "string" } }, "required": [ "domain", "projectId", "projectName", "target" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "project": { "properties": { "name": { "type": "string" }, "id": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "projectMembership": { "nullable": true, "properties": { "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ] }, "uid": { "type": "string" }, "createdAt": { "type": "number" }, "username": { "type": "string" } }, "required": [ "createdAt", "role", "uid" ], "type": "object" } }, "required": [ "project", "projectMembership" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "project": { "properties": { "name": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ] }, "invitedUserName": { "type": "string" }, "id": { "type": "string" }, "invitedUserId": { "type": "string" } }, "required": [ "invitedUserName", "name", "role" ], "type": "object" } }, "required": [ "project" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "project": { "properties": { "name": { "type": "string" }, "id": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "removedMembership": { "properties": { "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ] }, "uid": { "type": "string" }, "createdAt": { "type": "number" }, "username": { "type": "string" } }, "required": [ "createdAt", "role", "uid" ], "type": "object" } }, "required": [ "project", "removedMembership" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "projectMembership": { "properties": { "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ] }, "uid": { "type": "string" }, "createdAt": { "type": "number" }, "username": { "type": "string" }, "previousRole": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER", "PROJECT_GUEST" ] } }, "type": "object" } }, "required": [ "project", "projectMembership" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "previousProjectName": { "type": "string" }, "newProjectName": { "type": "string" }, "originAccountName": { "type": "string" }, "transferId": { "type": "string" } }, "required": [ "newProjectName", "originAccountName", "previousProjectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectName": { "type": "string" }, "destinationAccountName": { "nullable": true, "type": "string" }, "transferId": { "type": "string" } }, "required": [ "destinationAccountName", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "originAccountName": { "type": "string" }, "destinationAccountName": { "type": "string" }, "destinationAccountId": { "type": "string" }, "transferId": { "type": "string" } }, "required": [ "destinationAccountId", "destinationAccountName", "originAccountName", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "previousProjectName": { "type": "string" }, "newProjectName": { "type": "string" }, "destinationAccountName": { "type": "string" }, "transferId": { "type": "string" } }, "required": [ "destinationAccountName", "newProjectName", "previousProjectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "source": { "type": "string" }, "projectId": { "type": "string" }, "projectName": { "type": "string" } }, "required": [ "projectId", "projectName", "source" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "optionsAllowlist": { "nullable": true, "properties": { "paths": { "items": { "properties": { "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" } }, "required": [ "paths" ], "type": "object" }, "oldOptionsAllowlist": { "nullable": true, "properties": { "paths": { "items": { "properties": { "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" } }, "required": [ "paths" ], "type": "object" } }, "required": [ "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "passwordProtection": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } }, "required": [ "deploymentType" ], "type": "object" }, { "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } ] }, "oldPasswordProtection": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } }, "required": [ "deploymentType" ], "type": "object" }, { "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } ] } }, "required": [ "oldPasswordProtection", "passwordProtection" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "reasonCode": { "type": "string", "enum": [ "BUDGET_REACHED", "PUBLIC_API", "BACKOFFICE" ] } }, "required": [ "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectName": { "type": "string" }, "consent": { "type": "string", "enum": [ "granted", "refused" ] } }, "required": [ "consent", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "targetDeploymentId": { "type": "string" } }, "required": [ "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "targetDeploymentId": { "type": "string" }, "newTargetPercentage": { "type": "number" } }, "required": [ "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "targetDeploymentId": { "type": "string" }, "action": { "type": "string" } }, "required": [ "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previous": { "properties": { "issuerMode": { "type": "string", "enum": [ "team", "global" ] } }, "type": "object" }, "next": { "properties": { "issuerMode": { "type": "string", "enum": [ "team", "global" ] } }, "required": [ "issuerMode" ], "type": "object" } }, "required": [ "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "customerSupportCodeVisibility", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "gitForkProtection", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "protectedSourcemaps": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "projectId", "projectName", "protectedSourcemaps" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "publicSource": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "projectId", "projectName", "publicSource" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "previous": { "properties": { "expiration": { "type": "string" }, "expirationProduction": { "type": "string" }, "expirationCanceled": { "type": "string" }, "expirationErrored": { "type": "string" } }, "type": "object" }, "next": { "properties": { "expiration": { "type": "string" }, "expirationProduction": { "type": "string" }, "expirationCanceled": { "type": "string" }, "expirationErrored": { "type": "string" } }, "type": "object" } }, "required": [ "next", "previous" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "next": { "properties": { "skewProtectionBoundaryAt": { "type": "number" } }, "required": [ "skewProtectionBoundaryAt" ], "type": "object" }, "previous": { "properties": { "skewProtectionBoundaryAt": { "type": "number" } }, "type": "object" } }, "required": [ "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "next": { "properties": { "skewProtectionMaxAge": { "type": "number" } }, "required": [ "skewProtectionMaxAge" ], "type": "object" }, "previous": { "properties": { "skewProtectionMaxAge": { "type": "number" } }, "type": "object" } }, "required": [ "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "next": { "properties": { "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" } }, "required": [ "skewProtectionAllowedDomains" ], "type": "object" }, "previous": { "properties": { "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" } }, "type": "object" } }, "required": [ "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "ssoProtection": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] } }, "required": [ "deploymentType" ], "type": "object" }, { "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } ] }, "oldSsoProtection": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] } }, "required": [ "deploymentType" ], "type": "object" }, { "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } ] } }, "required": [ "oldSsoProtection", "ssoProtection" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "next": { "properties": { "project": { "properties": { "id": { "type": "string" }, "staticIps": { "properties": { "builds": { "type": "boolean", "enum": [ false, true ] }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "regions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "enabled" ], "type": "object" } }, "required": [ "staticIps" ], "type": "object" } }, "required": [ "project" ], "type": "object" }, "previous": { "properties": { "project": { "properties": { "id": { "type": "string" }, "staticIps": { "properties": { "builds": { "type": "boolean", "enum": [ false, true ] }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "regions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "enabled" ], "type": "object" } }, "required": [ "staticIps" ], "type": "object" } }, "required": [ "project" ], "type": "object" } }, "required": [ "next", "previous", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "trustedIps": { "nullable": true, "type": "string", "enum": [ "production", "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "oldTrustedIps": { "nullable": true, "type": "string", "enum": [ "production", "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains", null ] }, "addedAddresses": { "nullable": true, "items": { "type": "string" }, "type": "array" }, "removedAddresses": { "nullable": true, "items": { "type": "string" }, "type": "array" } }, "required": [ "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "addedProjects": { "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "removedProjects": { "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "addedProviders": { "items": { "type": "string" }, "type": "array" }, "removedProviders": { "items": { "type": "string" }, "type": "array" } }, "required": [ "addedProjects", "addedProviders", "projectId", "projectName", "removedProjects", "removedProviders" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "reasonCode": { "type": "string", "enum": [ "PUBLIC_API", "BACKOFFICE" ] } }, "required": [ "projectId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "projectWebAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "prevProjectWebAnalytics": { "nullable": true, "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" } }, "required": [ "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "gitProvider": { "type": "string" }, "gitProviderGroupDescriptor": { "type": "string" }, "gitScope": { "type": "string" } }, "required": [ "gitProvider", "gitProviderGroupDescriptor", "gitScope" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "instances": { "type": "number" }, "url": { "type": "string" } }, "required": [ "instances", "url" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "email": { "type": "string" }, "verified": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "email", "verified" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "email": { "type": "string" } }, "required": [ "email" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "uid": { "type": "string" }, "name": { "oneOf": [ { "type": "string" }, { "properties": { "name": { "type": "string" } }, "required": [ "name" ], "type": "object" } ] } }, "required": [ "name", "uid" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "oldName": { "type": "string" }, "newName": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "newName", "oldName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number" }, "projectId": { "type": "string" }, "projectName": { "type": "string" } }, "required": [ "enabled", "updatedAt" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "bio": { "type": "string" } }, "required": [ "bio" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "scalingRules": { "additionalProperties": { "properties": { "min": { "type": "number" }, "max": { "type": "number" } }, "required": [ "max", "min" ], "type": "object" }, "type": "object" }, "min": { "type": "number" }, "max": { "type": "number" }, "url": { "type": "string" } }, "required": [ "max", "min", "scalingRules", "url" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "userAgent": { "type": "string" }, "geolocation": { "nullable": true, "properties": { "city": { "properties": { "names": { "properties": { "en": { "type": "string" } }, "required": [ "en" ], "type": "object" } }, "required": [ "names" ], "type": "object" }, "country": { "properties": { "names": { "properties": { "en": { "type": "string" } }, "required": [ "en" ], "type": "object" } }, "required": [ "names" ], "type": "object" }, "most_specific_subdivision": { "properties": { "names": { "properties": { "en": { "type": "string" } }, "required": [ "en" ], "type": "object" } }, "required": [ "names" ], "type": "object" }, "regionName": { "type": "string" } }, "required": [ "country" ], "type": "object" }, "env": { "type": "string" }, "os": { "type": "string" }, "username": { "type": "string" }, "ssoType": { "type": "string" }, "factors": { "items": { "oneOf": [ { "properties": { "origin": { "type": "string", "enum": [ "email", "saml", "github", "gitlab", "bitbucket", "google", "apple", "chatgpt", "otp" ] }, "username": { "type": "string" }, "teamId": { "type": "string" }, "legacy": { "type": "boolean", "enum": [ false, true ] }, "ssoType": { "type": "string" } }, "required": [ "origin" ], "type": "object" } ] }, "maxItems": 1, "minItems": 1, "type": "array" }, "viaOTP": { "type": "boolean", "enum": [ false, true ] }, "viaGithub": { "type": "boolean", "enum": [ false, true ] }, "viaGitlab": { "type": "boolean", "enum": [ false, true ] }, "viaBitbucket": { "type": "boolean", "enum": [ false, true ] }, "viaGoogle": { "type": "boolean", "enum": [ false, true ] }, "viaApple": { "type": "boolean", "enum": [ false, true ] }, "viaSamlSso": { "type": "boolean", "enum": [ false, true ] }, "viaPasskey": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "email": { "type": "string" }, "bitbucketLogin": { "type": "string" }, "bitbucketEmail": { "type": "string" }, "bitbucketName": { "type": "string" }, "zeitAccount": { "type": "string" }, "zeitAccountType": { "type": "string" } }, "required": [ "bitbucketEmail", "bitbucketLogin", "bitbucketName", "email", "zeitAccount", "zeitAccountType" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "email": { "type": "string" }, "githubLogin": { "type": "string" }, "zeitAccount": { "type": "string" }, "zeitAccountType": { "type": "string" } }, "required": [ "email", "githubLogin", "zeitAccount", "zeitAccountType" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "email": { "type": "string" }, "gitlabLogin": { "type": "string" }, "gitlabEmail": { "type": "string" }, "gitlabName": { "type": "string" }, "zeitAccount": { "type": "string" }, "zeitAccountType": { "type": "string" } }, "required": [ "email", "gitlabEmail", "gitlabLogin", "gitlabName", "zeitAccount", "zeitAccountType" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "analyticsId": { "type": "string" }, "sampleRatePercent": { "nullable": true, "type": "number" }, "spendLimitInDollars": { "nullable": true, "type": "number" }, "previous": { "properties": { "sampleRatePercent": { "nullable": true, "type": "number" }, "spendLimitInDollars": { "nullable": true, "type": "number" } }, "required": [ "sampleRatePercent", "spendLimitInDollars" ], "type": "object" } }, "required": [ "previous", "sampleRatePercent", "spendLimitInDollars" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "budget": { "properties": { "budgetItem": { "properties": { "type": { "type": "string", "enum": [ "fixed" ], "description": "The budget type" }, "fixedBudget": { "type": "number", "description": "Budget amount (USD / dollars)" }, "previousSpend": { "items": { "type": "number" }, "type": "array", "description": "Array of the last 3 months of spend data" }, "notifiedAt": { "items": { "type": "number" }, "type": "array", "description": "Array of 50, 75, 100 to keep track of notifications sent out" }, "webhookId": { "type": "string", "description": "Webhook id that corresponds to a webhook in Cosmos webhook collection" }, "webhookNotified": { "type": "boolean", "enum": [ false, true ], "description": "Keep track if the webhook has been called for the month" }, "createdAt": { "type": "number", "description": "Date time when budget is created" }, "updatedAt": { "type": "number", "description": "Date time when budget is updated last" }, "isActive": { "type": "boolean", "enum": [ false, true ], "description": "Is the budget currently active for a customer" }, "pauseProjects": { "type": "boolean", "enum": [ false, true ], "description": "Should all projects be paused if budget is exceeded" }, "pricingPlan": { "type": "string", "enum": [ "platform", "plus", "legacy", "unbundled" ], "description": "The acive pricing plan the team is billed with" }, "teamId": { "type": "string", "description": "Partition key" }, "id": { "type": "string", "description": "Sort key that needs to be unique per teamId" } }, "required": [ "createdAt", "fixedBudget", "id", "isActive", "notifiedAt", "previousSpend", "teamId", "type" ], "type": "object", "description": "Represents a budget for tracking and notifying teams on their spending." } }, "required": [ "budgetItem" ], "type": "object" } }, "required": [ "budget" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "budget": { "properties": { "type": { "type": "string", "enum": [ "fixed" ], "description": "The budget type" }, "fixedBudget": { "type": "number", "description": "Budget amount (USD / dollars)" }, "previousSpend": { "items": { "type": "number" }, "type": "array", "description": "Array of the last 3 months of spend data" }, "notifiedAt": { "items": { "type": "number" }, "type": "array", "description": "Array of 50, 75, 100 to keep track of notifications sent out" }, "webhookId": { "type": "string", "description": "Webhook id that corresponds to a webhook in Cosmos webhook collection" }, "webhookNotified": { "type": "boolean", "enum": [ false, true ], "description": "Keep track if the webhook has been called for the month" }, "createdAt": { "type": "number", "description": "Date time when budget is created" }, "updatedAt": { "type": "number", "description": "Date time when budget is updated last" }, "isActive": { "type": "boolean", "enum": [ false, true ], "description": "Is the budget currently active for a customer" }, "pauseProjects": { "type": "boolean", "enum": [ false, true ], "description": "Should all projects be paused if budget is exceeded" }, "pricingPlan": { "type": "string", "enum": [ "platform", "plus", "legacy", "unbundled" ], "description": "The acive pricing plan the team is billed with" }, "teamId": { "type": "string", "description": "Partition key" }, "id": { "type": "string", "description": "Sort key that needs to be unique per teamId" } }, "required": [ "createdAt", "fixedBudget", "id", "isActive", "notifiedAt", "previousSpend", "teamId", "type" ], "type": "object", "description": "Represents a budget for tracking and notifying teams on their spending." } }, "required": [ "budget" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "budget": { "properties": { "type": { "type": "string", "enum": [ "fixed" ], "description": "The budget type" }, "fixedBudget": { "type": "number", "description": "Budget amount (USD / dollars)" }, "previousSpend": { "items": { "type": "number" }, "type": "array", "description": "Array of the last 3 months of spend data" }, "notifiedAt": { "items": { "type": "number" }, "type": "array", "description": "Array of 50, 75, 100 to keep track of notifications sent out" }, "webhookId": { "type": "string", "description": "Webhook id that corresponds to a webhook in Cosmos webhook collection" }, "webhookNotified": { "type": "boolean", "enum": [ false, true ], "description": "Keep track if the webhook has been called for the month" }, "createdAt": { "type": "number", "description": "Date time when budget is created" }, "updatedAt": { "type": "number", "description": "Date time when budget is updated last" }, "isActive": { "type": "boolean", "enum": [ false, true ], "description": "Is the budget currently active for a customer" }, "pauseProjects": { "type": "boolean", "enum": [ false, true ], "description": "Should all projects be paused if budget is exceeded" }, "pricingPlan": { "type": "string", "enum": [ "platform", "plus", "legacy", "unbundled" ], "description": "The acive pricing plan the team is billed with" }, "teamId": { "type": "string", "description": "Partition key" }, "id": { "type": "string", "description": "Sort key that needs to be unique per teamId" } }, "required": [ "createdAt", "fixedBudget", "id", "isActive", "notifiedAt", "previousSpend", "teamId", "type" ], "type": "object", "description": "Represents a budget for tracking and notifying teams on their spending." }, "webhookUrl": { "type": "string" } }, "required": [ "budget" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "webhookUrl": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "storeType": { "type": "string", "enum": [ "redis", "postgres" ] } }, "required": [ "storeType" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "transferRequestCode": { "type": "string" }, "store": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "integration", "redis", "postgres", "edge-config", "blob" ] } }, "required": [ "id", "type" ], "type": "object" } }, "required": [ "store", "transferRequestCode" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "transferRequestCode": { "type": "string" }, "store": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "integration", "redis", "postgres", "edge-config", "blob" ] } }, "required": [ "id", "type" ], "type": "object" }, "destinationTeamId": { "type": "string" }, "destinationTeamName": { "type": "string" } }, "required": [ "destinationTeamId", "destinationTeamName", "store", "transferRequestCode" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "transferRequestCode": { "type": "string" }, "store": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "integration", "redis", "postgres", "edge-config", "blob" ] } }, "required": [ "id", "type" ], "type": "object" }, "originTeamId": { "type": "string" }, "originTeamName": { "type": "string" } }, "required": [ "originTeamId", "originTeamName", "store", "transferRequestCode" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "computeUnitsMax": { "type": "number" }, "computeUnitsMin": { "type": "number" }, "suspendTimeoutSeconds": { "type": "number" }, "type": { "type": "string", "enum": [ "integration", "redis", "postgres", "edge-config", "blob" ] }, "access": { "type": "string", "enum": [ "public", "private" ] } }, "required": [ "id", "type" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "store": { "properties": { "name": { "type": "string" }, "id": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "ownerId": { "type": "string" } }, "required": [ "store" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "computeUnitsMax": { "type": "number" }, "computeUnitsMin": { "type": "number" }, "suspendTimeoutSeconds": { "type": "number" }, "type": { "type": "string", "enum": [ "integration", "redis", "postgres", "edge-config", "blob" ] }, "access": { "type": "string", "enum": [ "public", "private" ] }, "locked": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "id", "locked", "type" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "slug": { "type": "string" } }, "required": [ "slug" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "previous": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether automatic code reviews are enabled" }, "scope": { "type": "string", "enum": [ "public", "private", "all", "selected_repos" ], "description": "Which repository visibilities get automatic reviews" }, "includeDrafts": { "type": "boolean", "enum": [ false, true ], "description": "Whether to include draft pull requests in automatic reviews" }, "selectedRepos": { "nullable": true, "items": { "type": "string" }, "type": "array", "description": "GitHub repos to scope automatic reviews to. Format: \"owner/repo\" (lowercase). Only used when scope='selected_repos'." } }, "required": [ "enabled", "includeDrafts", "scope" ], "type": "object", "description": "Automatic code review settings" }, "next": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether automatic code reviews are enabled" }, "scope": { "type": "string", "enum": [ "public", "private", "all", "selected_repos" ], "description": "Which repository visibilities get automatic reviews" }, "includeDrafts": { "type": "boolean", "enum": [ false, true ], "description": "Whether to include draft pull requests in automatic reviews" }, "selectedRepos": { "nullable": true, "items": { "type": "string" }, "type": "array", "description": "GitHub repos to scope automatic reviews to. Format: \"owner/repo\" (lowercase). Only used when scope='selected_repos'." } }, "required": [ "enabled", "includeDrafts", "scope" ], "type": "object", "description": "Automatic code review settings" } }, "required": [ "next" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "trialCreditsIssuedAt": { "type": "number" }, "expiresAt": { "type": "string" }, "amount": { "type": "string" }, "currency": { "type": "string" } }, "required": [ "amount", "currency", "expiresAt", "trialCreditsIssuedAt" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "previous": { "type": "string", "enum": [ "enhanced", "turbo", "standard", "elastic" ] }, "next": { "type": "string", "enum": [ "enhanced", "turbo", "standard", "elastic" ] } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "slug": { "type": "string" }, "teamId": { "type": "string" }, "by": { "type": "string" }, "byUid": { "type": "string" }, "reasons": { "items": { "properties": { "slug": { "type": "string" }, "description": { "type": "string" } }, "required": [ "description", "slug" ], "type": "object" }, "type": "array" }, "removedUsers": { "additionalProperties": { "properties": { "role": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "confirmed": { "type": "boolean", "enum": [ false, true ] }, "confirmedAt": { "type": "number" } }, "required": [ "confirmed", "role" ], "type": "object" }, "type": "object" }, "removedMemberCount": { "type": "number" }, "timestamp": { "type": "number" } }, "required": [ "by", "slug", "teamId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "domain": { "type": "string" } }, "required": [ "enabled" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "enabled": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "environment": { "type": "string", "enum": [ "production", "preview" ] } }, "required": [ "enabled", "environment", "projectId", "projectName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "environment": { "type": "string", "enum": [ "production", "preview" ] }, "enabled": { "type": "string", "enum": [ "default", "on", "off", "on-force", "off-force", "default-force" ] } }, "required": [ "enabled", "environment" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "emailDomain": { "nullable": true, "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "deletedCount": { "type": "number" }, "inviteIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "deletedCount", "inviteIds" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "directoryType": { "type": "string" }, "ssoType": { "type": "string" }, "invitedUser": { "properties": { "username": { "type": "string" }, "email": { "type": "string" } }, "required": [ "email", "username" ], "type": "object" }, "invitedEmail": { "type": "string" }, "invitationRole": { "type": "string" }, "entitlements": { "items": { "type": "string" }, "type": "array" }, "invitedUid": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "teamName": { "type": "string" }, "username": { "type": "string" }, "gitUsername": { "type": "string" }, "githubUsername": { "nullable": true, "type": "string" }, "gitlabUsername": { "nullable": true, "type": "string" }, "bitbucketUsername": { "nullable": true, "type": "string" }, "updatedUid": { "type": "string" }, "teamId": { "type": "string" } }, "required": [ "teamName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "teamName": { "type": "string" }, "username": { "type": "string" }, "gitUsername": { "nullable": true, "type": "string" }, "githubUsername": { "nullable": true, "type": "string" }, "gitlabUsername": { "nullable": true, "type": "string" }, "bitbucketUsername": { "nullable": true, "type": "string" } }, "required": [ "teamName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "deletedUser": { "properties": { "username": { "type": "string" }, "email": { "type": "string" } }, "required": [ "email", "username" ], "type": "object" }, "deletedUid": { "type": "string" }, "githubUsername": { "nullable": true, "type": "string" }, "gitlabUsername": { "nullable": true, "type": "string" }, "bitbucketUsername": { "nullable": true, "type": "string" }, "directoryType": { "type": "string" }, "role": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "reason": { "type": "string", "description": "Why the member was removed. When removed due to a plan downgrade, this is a {@link DowngradeReason} from `@api/pubsub-types` (e.g. `trial_expired`, `user_downgrade`)." }, "previousPlan": { "type": "string", "enum": [ "pro", "enterprise", "hobby" ] }, "newPlan": { "type": "string", "enum": [ "pro", "enterprise", "hobby" ] }, "automated": { "type": "boolean", "enum": [ false, true ], "description": "Whether the removal was system-initiated rather than human-initiated." } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "entitlement": { "type": "string" }, "user": { "properties": { "id": { "type": "string" }, "username": { "type": "string" } }, "required": [ "id", "username" ], "type": "object" } }, "required": [ "entitlement", "user" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "entitlement": { "type": "string" }, "user": { "properties": { "id": { "type": "string" }, "username": { "type": "string" } }, "required": [ "id", "username" ], "type": "object" }, "previousCanceledAt": { "type": "string" } }, "required": [ "entitlement", "user" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "role": { "type": "string" }, "uid": { "type": "string" }, "origin": { "type": "string" }, "teamRoles": { "items": { "type": "string" }, "type": "array" }, "teamPermissions": { "items": { "type": "string" }, "type": "array" }, "entitlements": { "items": { "type": "string" }, "type": "array" } }, "required": [ "uid" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "requestedTeamName": { "type": "string" }, "requestedUserName": { "type": "string" }, "gitUsername": { "type": "string" }, "githubUsername": { "type": "string" }, "gitlabUsername": { "type": "string" }, "bitbucketUsername": { "type": "string" } }, "required": [ "requestedTeamName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "directoryType": { "type": "string" }, "updatedUser": { "properties": { "username": { "type": "string" }, "email": { "type": "string" } }, "required": [ "email", "username" ], "type": "object" }, "role": { "type": "string" }, "previousRole": { "type": "string" }, "updatedUid": { "type": "string" }, "origin": { "type": "string" } }, "required": [ "previousRole" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "enforced": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enforced" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "publicId": { "type": "string" }, "role": { "type": "string" }, "maxUses": { "type": "number" }, "expiresAt": { "type": "string" }, "name": { "type": "string" } }, "required": [ "expiresAt", "maxUses", "publicId", "role" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "publicId": { "type": "string" }, "name": { "type": "string" } }, "required": [ "publicId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "previousConcurrentBuilds": { "type": "number" }, "nextConcurrentBuilds": { "type": "number" } }, "required": [ "nextConcurrentBuilds", "previousConcurrentBuilds" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "plan": { "type": "string", "enum": [ "pro", "enterprise", "hobby" ] }, "trial": { "nullable": true, "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, "required": [ "end", "start" ], "type": "object" } }, "required": [ "plan" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "invoiceId": { "type": "string" }, "convertedFromTrial": { "type": "boolean", "enum": [ false, true ] }, "plan": { "type": "string", "enum": [ "pro", "enterprise", "hobby" ] } }, "required": [ "convertedFromTrial", "invoiceId", "plan" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "inviteCode": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "name": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "consent": { "type": "string", "enum": [ "granted", "refused" ] } }, "required": [ "consent" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "remoteCaching": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "Represents configuration for remote caching" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "enabled": { "type": "string", "enum": [ "default", "on", "off" ] } }, "required": [ "enabled" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "scope": { "type": "string", "enum": [ "dashboard", "log-drains" ] } }, "required": [ "enabled", "scope" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "previous": { "additionalProperties": { "oneOf": [ { "properties": { "accessGroupId": { "type": "string" } }, "required": [ "accessGroupId" ], "type": "object" }, { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] } ] }, "type": "object" }, "next": { "additionalProperties": { "oneOf": [ { "properties": { "accessGroupId": { "type": "string" } }, "required": [ "accessGroupId" ], "type": "object" }, { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] } ] }, "type": "object" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "domain": { "type": "string" }, "ips": { "items": { "type": "string" }, "type": "array" } }, "required": [ "domain", "ips" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "tokenTypes": { "items": { "type": "string" }, "type": "array" } }, "required": [ "tokenTypes" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "exportId": { "type": "string" }, "from": { "type": "number" }, "to": { "type": "number" }, "format": { "type": "string" } }, "required": [ "exportId", "format", "from", "to" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "fileId": { "type": "string" } }, "required": [ "fileId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "slug": { "type": "string" } }, "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "provider": { "type": "string", "enum": [ "github", "github-limited", "github-custom-host", "gitlab", "bitbucket", "google", "apple", "chatgpt" ] }, "login": { "type": "string" } }, "required": [ "login", "provider" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "totp": { "type": "boolean", "enum": [ false, true ] }, "recoveryCodes": { "type": "number" }, "actorId": { "type": "string" }, "actorType": { "type": "string", "enum": [ "user", "admin" ] }, "reason": { "type": "string" } }, "required": [ "recoveryCodes", "totp" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "deletedAt": { "nullable": true, "type": "number" }, "username": { "type": "string" } }, "required": [ "username" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "previous": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "totpVerified": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "totpVerified" ], "type": "object" }, "next": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "totpVerified": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "totpVerified" ], "type": "object" } }, "required": [ "next", "previous" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "mfaEnabled": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "mfaEnabled" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "totpVerified": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "totpVerified" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "email": { "type": "string" }, "prevEmail": { "type": "string" } }, "required": [ "email", "prevEmail" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "username": { "type": "string" } }, "required": [ "username" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "ruleName": { "type": "string" } }, "required": [ "ruleName" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "vulnerabilities": { "items": { "type": "string" }, "type": "array" }, "protectionEnabled": { "type": "boolean", "enum": [ false, true ] }, "protectedProjectCount": { "type": "number" } }, "required": [ "protectedProjectCount", "protectionEnabled", "vulnerabilities" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "configuration": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "peering": { "properties": { "id": { "type": "string" }, "accountId": { "type": "string" }, "region": { "type": "string" }, "vpcId": { "type": "string" } }, "required": [ "accountId", "id", "region", "vpcId" ], "type": "object" } }, "required": [ "configuration", "peering", "team" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "configuration": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "peering": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "configuration", "peering", "team" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "configuration": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "peering": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "newName": { "type": "string" } }, "required": [ "configuration", "peering", "team" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "tier": { "type": "string", "enum": [ "pro", "plus" ] } }, "required": [ "tier" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "id": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "url" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "chatId": { "type": "string" }, "chatTitle": { "type": "string" } }, "required": [ "chatId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "model": { "type": "string" }, "useCase": { "type": "string" } }, "required": [ "model", "useCase" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "chatId": { "type": "string" }, "chatTitle": { "type": "string" }, "messageId": { "type": "string" } }, "required": [ "chatId", "messageId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "runId": { "type": "string" } }, "required": [ "deploymentId", "projectId", "runId" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "grantType": { "type": "string", "enum": [ "authorization_code", "urn:ietf:params:oauth:grant-type:device_code" ] }, "appName": { "type": "string", "description": "the app's name at the time the event was published (it could have changed since then)" }, "atTTL": { "type": "number", "description": "access_token TTL" }, "rtTTL": { "type": "number", "description": "refresh_token TTL" }, "scope": { "type": "string" }, "authMethod": { "type": "string", "enum": [ "email", "saml", "app", "github", "gitlab", "bitbucket", "google", "apple", "chatgpt", "github-webhook", "manual", "passkey", "otp", "sms", "invite", "emu" ] }, "app": { "properties": { "clientId": { "type": "string" }, "name": { "type": "string", "description": "the app's name at the time the event was published (it could have changed since then)" }, "clientAuthenticationUsed": { "properties": { "method": { "type": "string", "enum": [ "none", "client_secret_basic", "client_secret_post", "client_secret_jwt", "private_key_jwt", "oidc_token" ] }, "secretId": { "type": "string" } }, "required": [ "method" ], "type": "object" } }, "required": [ "clientAuthenticationUsed", "clientId", "name" ], "type": "object", "description": "optional since entries prior to 2025-10-13 do not contain app information" }, "includesRefreshToken": { "type": "boolean", "enum": [ false, true ], "description": "optional since entries prior to 2025-10-13 do not contain this field" }, "publicId": { "type": "string", "description": "optional since entries prior to 2025-10-13 do not contain this field" }, "sessionId": { "type": "string", "description": "optional since entries prior to 2025-10-13 do not contain this field" } }, "required": [ "appName", "atTTL", "authMethod", "grantType", "scope" ], "type": "object", "description": "The payload of the event, if requested." }, { "properties": { "tokenId": { "type": "string", "description": "The token's public ID." }, "tokenName": { "type": "string", "description": "User-supplied name of the token." }, "origin": { "type": "string", "enum": [ "email", "saml", "app", "github", "gitlab", "bitbucket", "google", "apple", "chatgpt", "github-webhook", "manual", "passkey", "otp", "sms", "invite", "emu" ], "description": "How the token was issued. Always `'manual'` for explicit PAT creation." }, "scope": { "type": "string", "enum": [ "user", "team", "project" ], "description": "Scope of the token: - `'user'`: full-account token (not tied to any team). - `'team'`: scoped to a single team. - `'project'`: scoped to a single project within a team." }, "teamId": { "type": "string", "description": "Present when `scope` is `'team'` or `'project'`." }, "teamSlug": { "type": "string", "description": "Present when `scope` is `'team'` or `'project'`." }, "projectId": { "type": "string", "description": "Present when `scope` is `'project'`." }, "expiresAt": { "type": "number", "description": "Unix epoch milliseconds. Absent when the token never expires." }, "hasAuthorizationDetails": { "type": "boolean", "enum": [ false, true ], "description": "Whether the token was issued with RFC 9396 authorization details." }, "ip": { "nullable": true, "type": "string" }, "geolocation": { "nullable": true, "properties": { "city": { "properties": { "names": { "properties": { "en": { "type": "string" } }, "required": [ "en" ], "type": "object" } }, "required": [ "names" ], "type": "object" }, "country": { "properties": { "names": { "properties": { "en": { "type": "string" } }, "required": [ "en" ], "type": "object" } }, "required": [ "names" ], "type": "object" }, "most_specific_subdivision": { "properties": { "names": { "properties": { "en": { "type": "string" } }, "required": [ "en" ], "type": "object" } }, "required": [ "names" ], "type": "object" }, "regionName": { "type": "string" } }, "required": [ "country" ], "type": "object" }, "userAgent": { "type": "string" }, "reqId": { "type": "string" }, "reqUrl": { "type": "string" } }, "required": [ "origin", "scope", "tokenId", "tokenName" ], "type": "object", "description": "The payload of the event, if requested." } ] } }, "required": [ "createdAt", "entities", "id", "principalId", "text", "userId" ], "type": "object", "description": "Array of events generated by the User." }, "ListEventType": { "properties": { "name": { "type": "string", "enum": [ "team", "avatar", "alias", "plan", "flag", "deployment", "ai-gateway-api-key-created", "ai-gateway-api-key-deleted", "ai-gateway-byok-credential-created", "ai-gateway-byok-credential-deleted", "ai-gateway-byok-credential-updated", "access-group-created", "access-group-deleted", "access-group-project-updated", "access-group-updated", "access-group-user-added", "access-group-user-removed", "password-protection-disabled", "password-protection-enabled", "aliases-assigned", "alias-chown", "alias-delete", "alias-invite-created", "alias-invite-joined", "alias-invite-revoked", "alias-protection-bypass-created", "alias-protection-bypass-exception", "alias-protection-bypass-regenerated", "alias-protection-bypass-revoked", "alias-system", "alias-user-scoped-access-denied", "alias-user-scoped-access-granted", "alias-user-scoped-access-requested", "alias-user-scoped-access-revoked", "oauth-app-connection-created", "oauth-app-connection-removed", "oauth-app-connection-updated", "oauth-app-created", "oauth-app-deleted", "vercel-app-installation-request-dismissed", "vercel-app-installation-requested", "vercel-app-installation-updated", "vercel-app-installed", "oauth-app-secret-deleted", "oauth-app-secret-generated", "oauth-app-token-created", "vercel-app-tokens-revoked", "vercel-app-uninstalled", "oauth-app-updated", "attack-mode-disabled", "attack-mode-enabled", "auto-expose-system-envs", "invoice-refunded", "invoice-modified", "payment-method-added", "payment-method-default-updated", "payment-method-removed", "subscription-created", "subscription-updated", "subscription-product-added", "subscription-product-removed", "bulk-redirects-settings-updated", "bulk-redirects-version-promoted", "bulk-redirects-version-restored", "cert", "cert-system-create", "cert-autorenew", "cert-chown", "cert-clone", "cert-delete", "cert-renew", "cert-replace", "connect-configuration-created", "connect-configuration-deleted", "connect-configuration-link-updated", "connect-configuration-linked", "connect-configuration-unlinked", "connect-configuration-updated", "connect-github", "disconnect-github", "connect-github-limited", "disconnect-github-limited", "connect-github-custom-host", "disconnect-github-custom-host", "connect-gitlab", "connect-gitlab-app", "disconnect-gitlab-app", "connect-bitbucket", "connect-bitbucket-app", "disconnect-bitbucket-app", "custom-suffix-clear", "custom-suffix-disable", "preview-deployment-suffix-disabled", "custom-suffix-enable", "preview-deployment-suffix-enabled", "custom-suffix-pending", "custom-suffix-ready", "deploy-hook-created", "deploy-hook-deleted", "deploy-hook-deduped", "deploy-hook-processed", "deployment-check-created", "deployment-check-updated", "deployment-check-deleted", "authorize-git-deployment", "deployment-chown", "deployment-creation-blocked", "deployment-delete", "disabled-integration-installation-removed", "dns-add", "dns-delete", "dns-update", "domain", "domain-buy", "domain-cdn", "domain-chown", "domain-delegated", "domain-delete", "domain-service-type-updated", "domain-custom-ns-change", "dns-zonefile-import", "domain-zone-change", "domain-move-in", "domain-move-out", "domain-move-out-request-sent", "domain-renew-change", "domain-transfer-in", "domain-transfer-in-canceled", "domain-transfer-in-completed", "drain-created", "drain-deleted", "drain-disabled", "drain-enabled", "drain-updated", "edge-cache-dangerously-delete-by-src-images", "edge-cache-dangerously-delete-by-tags", "edge-cache-invalidate-by-src-images", "edge-cache-invalidate-by-tags", "edge-cache-purge-all", "edge-cache-rollback-purge", "edge-config-created", "edge-config-deleted", "edge-config-items-updated", "edge-config-schema-deleted", "edge-config-schema-updated", "edge-config-transfer-in", "edge-config-transfer-out", "edge-config-token-created", "edge-config-token-deleted", "edge-config-updated", "email", "email-notification-rule-removed", "email-notification-rule-updated", "env-variable-add", "env-variable-delete", "env-variable-edit", "env-variable-read", "env-variable-read:cli:dev", "env-variable-read:cli:env:add", "env-variable-read:cli:env:ls", "env-variable-read:cli:env:pull", "env-variable-read:cli:env:rm", "env-variable-read:cli:pull", "env-variable-read:unknown-source", "env-variable-read:v0:env:pull", "env-variable-rotated", "shared-env-variable-create", "shared-env-variable-delete", "shared-env-variable-read", "shared-env-variable-update", "firewall-bypass-created", "firewall-bypass-deleted", "firewall-config-modified", "firewall-config-promoted", "firewall-config-removed", "firewall-managed-rulegroup-updated", "firewall-managed-ruleset-updated", "flags-segment", "flags-settings", "flag-created", "flag-updated", "flag-deleted", "flag-archived", "flag-unarchived", "flags-explorer-subscription", "flags-sdk-key", "flags-sdk-key-added", "flags-sdk-key-deleted", "flags-sdk-key-read", "instant-rollback-created", "integration-configuration-owner-changed", "integration-configuration-scope-change-confirmed", "integration-configurations-disabled", "integration-installation-billing-plan-updated", "integration-installation-completed", "integration-installation-permission-updated", "integration-installation-removed", "integration-scope-changed", "log-drain-created", "log-drain-deleted", "log-drain-disabled", "log-drain-enabled", "login", "manual-deployment-promotion-created", "microfrontend-group-added", "microfrontend-group-deleted", "microfrontend-group-updated", "microfrontend-project-added-to-group", "microfrontend-project-removed-from-group", "microfrontend-project-updated", "monitoring-disabled", "monitoring-enabled", "observability-disabled", "observability-enabled", "observability-plus-project-disabled", "observability-plus-project-enabled", "owner-blocked", "owner-unblocked", "owner-soft-blocked", "owner-soft-unblocked", "page-integrity-config-updated", "page-integrity-header-approved", "page-integrity-resource-approved", "page-integrity-resource-deleted", "page-integrity-resource-rejected", "passkey-created", "passkey-deleted", "passkey-updated", "preview-deployment-suffix-update", "privatelink-endpoint-created", "privatelink-endpoint-deleted", "privatelink-endpoint-updated", "production-branch-updated", "project-directory-listing", "project-analytics-disabled", "project-speed-insights-disabled", "project-analytics-enabled", "project-speed-insights-enabled", "project-automation-bypass", "project-affected-projects-deployments-updated", "project-external-rewrite-caching-updated", "project-build-command-updated", "project-framework-updated", "project-install-command-updated", "project-node-version-updated", "project-output-directory-updated", "project-prioritize-production-builds-updated", "project-root-directory-updated", "project-source-files-outside-root-directory-updated", "project-build-machine-updated", "project-client-cert-delete", "project-client-cert-upload", "project-connect-configurations", "project-created", "project-cron-jobs-toggled", "project-delegated-protection-enabled", "project-delegated-protection-updated", "project-delegated-protection-disabled", "project-delete", "project-domain-unverified", "project-domain-verified", "project-elastic-concurrency-updated", "project-auto-assign-custom-production-domains-updated", "project-preview-environment-branch-tracking-updated", "project-custom-environment-updated", "project-custom-environment-created", "project-custom-environment-deleted", "project-functions-beta-updated", "project-functions-fluid-disabled", "project-functions-fluid-enabled", "project-function-max-duration", "project-function-cpu-memory", "project-function-regions", "project-function-failover", "project-preview-deployment-suffix", "project-name", "project-git-repository-connected", "project-git-repository-disconnected", "project-git-pr-comments-toggled", "project-git-commit-comments-toggled", "project-git-repository-dispatch-events-toggled", "project-git-create-deployments-toggled", "project-git-require-verified-commits-toggled", "team-git-require-verified-commits-toggled", "project-git-commit-status-toggled", "project-git-lfs-toggled", "project-consolidated-git-commit-status-updated", "project-ignored-build-step-updated", "project-add-alias", "project-add-redirect", "project-domain-deleted", "project-domain-moved", "project-domain-updated", "project-member-removed-batch", "project-alias-configured-change", "project-member-added", "project-member-invited", "project-member-removed", "project-member-updated", "project-move-in-success", "project-move-out-failed", "project-move-out-started", "project-move-out-success", "project-oidc-token-created", "project-options-allowlist", "project-password-protection", "project-paused", "project-program-enrollment-changed", "project-rolling-release-enabled", "project-rolling-release-disabled", "project-rolling-release-configured", "project-rolling-release-started", "project-rolling-release-completed", "project-rolling-release-aborted", "project-rolling-release-approved", "project-rolling-release-timer", "project-rolling-release-paused", "project-rolling-release-continued", "project-rolling-release-suggested-actions-generated", "project-routes-version-promoted", "project-routes-version-restored", "project-oidc-issuer-mode-updated", "project-customer-success-code-visibility-updated", "project-git-fork-protection-updated", "project-protected-sourcemaps-updated", "project-build-logs-and-source-protection-updated", "project-deployment-retention-updated", "project-skew-protection-threshold-updated", "project-skew-protection-max-age-updated", "project-skew-protection-allowed-domains-updated", "project-sso-protection", "project-static-ips-updated", "project-trusted-ips", "project-trusted-sources", "project-unpaused", "project-web-analytics-disabled", "project-web-analytics-enabled", "protected-git-scope-added", "protected-git-scope-removed", "runtime-cache-purge-all", "scale", "scale-auto", "secondary-email-added", "secondary-email-removed", "secondary-email-verified", "secret-add", "secret-delete", "secret-rename", "security-plus-updated", "set-bio", "set-name", "set-profiles", "set-scale", "signup", "signup-via-bitbucket", "signup-via-github", "signup-via-gitlab", "speed-insights-settings-updated", "spend-created", "spend-deleted", "spend-updated", "storage-accept-tos", "storage-transfer-request-created", "storage-transfer-out-success", "storage-transfer-in-success", "storage-create", "storage-reset-credentials", "storage-update", "storage-connect-project", "storage-disconnect-project", "storage-update-project-connection", "storage-upgrade-project-connection-to-oidc", "storage-delete", "storage-accessed-data-browser", "storage-view-secret", "storage-inactive-store-deleted", "storage-resource-repl-command", "storage-disconnect-projects", "storage-access-token-set", "storage-set-locked", "ai-code-review", "ai-alert-investigation", "vercel-agent-team-trial-credits-applied", "team-avatar-update", "team-default-build-machine-updated", "team-delete", "strict-deployment-protection-settings", "strict-shareable-links", "team-domain-verification-created", "team-domain-verification-deleted", "team-domain-verification-verified", "team-emu-updated", "vercel-toolbar", "team-email-domain-update", "team-invite-bulk-delete", "team-member-add", "team-member-confirm-request", "team-member-decline-request", "team-member-delete", "team-member-entitlement-added", "team-member-entitlement-canceled", "team-member-entitlement-reactivated", "team-member-entitlement-removed", "team-member-join", "team-member-leave", "team-member-request-access", "team-member-role-update", "team-mfa-enforcement-updated", "team-invite-link-created", "team-invite-link-deleted", "concurrent-builds-update", "team-ended-trial", "team-paid-invoice", "team-invite-code-reset", "team-name-update", "team-program-enrollment-changed", "team-remote-caching-update", "enforce-sensitive-environment-variables", "show-ip-addresses", "team-saml-enforced", "team-saml-roles", "team-ip-blocking-rules-created", "team-ip-blocking-rules-removed", "team-tokens-invalidated", "audit-log-export-requested", "audit-log-export-downloaded", "team-slug-update", "unlink-login-connection", "user-mfa-removed", "user-delete", "user-mfa-challenge-verified", "user-mfa-configuration-updated", "user-mfa-recovery-codes-regenerated", "user-mfa-totp-verification-started", "user-mfa-totp-verified", "user-primary-email-updated", "user-token-created", "username", "alert-rule-created", "alert-rule-updated", "alert-rule-deleted", "vulnerability-banner-dismissed", "vpc-peering-connection-accepted", "vpc-peering-connection-deleted", "vpc-peering-connection-rejected", "vpc-peering-connection-updated", "web-analytics-tier-updated", "webhook-created", "webhook-deleted", "webhook-updated", "v0-chat-created", "v0-chat-ai-usage", "v0-chat-message-sent", "workflow-deployment-key-accessed" ], "description": "The name of the event type.", "example": "deployment-created" }, "description": { "type": "string", "description": "Description of the event, visible to users in the Activity dashboard and docs." }, "categories": { "items": { "type": "string", "enum": [ "account", "ai", "ai-gateway", "billing", "deployment", "domain", "edge", "env-variable", "feature-flags", "firewall", "integration", "microfrontends", "network", "observability", "project", "security", "storage", "team", "v0", "vercel-app", "workflow", "other" ], "example": [ "deployment" ], "description": "Categories that group this event type with related event types." }, "type": "array", "description": "Categories that group this event type with related event types.", "example": [ "deployment" ] }, "deprecated": { "type": "boolean", "enum": [ false, true ], "description": "Present only when this event type is deprecated." }, "replacedBy": { "items": { "type": "string", "enum": [ "team", "avatar", "alias", "plan", "flag", "deployment", "ai-gateway-api-key-created", "ai-gateway-api-key-deleted", "ai-gateway-byok-credential-created", "ai-gateway-byok-credential-deleted", "ai-gateway-byok-credential-updated", "access-group-created", "access-group-deleted", "access-group-project-updated", "access-group-updated", "access-group-user-added", "access-group-user-removed", "password-protection-disabled", "password-protection-enabled", "aliases-assigned", "alias-chown", "alias-delete", "alias-invite-created", "alias-invite-joined", "alias-invite-revoked", "alias-protection-bypass-created", "alias-protection-bypass-exception", "alias-protection-bypass-regenerated", "alias-protection-bypass-revoked", "alias-system", "alias-user-scoped-access-denied", "alias-user-scoped-access-granted", "alias-user-scoped-access-requested", "alias-user-scoped-access-revoked", "oauth-app-connection-created", "oauth-app-connection-removed", "oauth-app-connection-updated", "oauth-app-created", "oauth-app-deleted", "vercel-app-installation-request-dismissed", "vercel-app-installation-requested", "vercel-app-installation-updated", "vercel-app-installed", "oauth-app-secret-deleted", "oauth-app-secret-generated", "oauth-app-token-created", "vercel-app-tokens-revoked", "vercel-app-uninstalled", "oauth-app-updated", "attack-mode-disabled", "attack-mode-enabled", "auto-expose-system-envs", "invoice-refunded", "invoice-modified", "payment-method-added", "payment-method-default-updated", "payment-method-removed", "subscription-created", "subscription-updated", "subscription-product-added", "subscription-product-removed", "bulk-redirects-settings-updated", "bulk-redirects-version-promoted", "bulk-redirects-version-restored", "cert", "cert-system-create", "cert-autorenew", "cert-chown", "cert-clone", "cert-delete", "cert-renew", "cert-replace", "connect-configuration-created", "connect-configuration-deleted", "connect-configuration-link-updated", "connect-configuration-linked", "connect-configuration-unlinked", "connect-configuration-updated", "connect-github", "disconnect-github", "connect-github-limited", "disconnect-github-limited", "connect-github-custom-host", "disconnect-github-custom-host", "connect-gitlab", "connect-gitlab-app", "disconnect-gitlab-app", "connect-bitbucket", "connect-bitbucket-app", "disconnect-bitbucket-app", "custom-suffix-clear", "custom-suffix-disable", "preview-deployment-suffix-disabled", "custom-suffix-enable", "preview-deployment-suffix-enabled", "custom-suffix-pending", "custom-suffix-ready", "deploy-hook-created", "deploy-hook-deleted", "deploy-hook-deduped", "deploy-hook-processed", "deployment-check-created", "deployment-check-updated", "deployment-check-deleted", "authorize-git-deployment", "deployment-chown", "deployment-creation-blocked", "deployment-delete", "disabled-integration-installation-removed", "dns-add", "dns-delete", "dns-update", "domain", "domain-buy", "domain-cdn", "domain-chown", "domain-delegated", "domain-delete", "domain-service-type-updated", "domain-custom-ns-change", "dns-zonefile-import", "domain-zone-change", "domain-move-in", "domain-move-out", "domain-move-out-request-sent", "domain-renew-change", "domain-transfer-in", "domain-transfer-in-canceled", "domain-transfer-in-completed", "drain-created", "drain-deleted", "drain-disabled", "drain-enabled", "drain-updated", "edge-cache-dangerously-delete-by-src-images", "edge-cache-dangerously-delete-by-tags", "edge-cache-invalidate-by-src-images", "edge-cache-invalidate-by-tags", "edge-cache-purge-all", "edge-cache-rollback-purge", "edge-config-created", "edge-config-deleted", "edge-config-items-updated", "edge-config-schema-deleted", "edge-config-schema-updated", "edge-config-transfer-in", "edge-config-transfer-out", "edge-config-token-created", "edge-config-token-deleted", "edge-config-updated", "email", "email-notification-rule-removed", "email-notification-rule-updated", "env-variable-add", "env-variable-delete", "env-variable-edit", "env-variable-read", "env-variable-read:cli:dev", "env-variable-read:cli:env:add", "env-variable-read:cli:env:ls", "env-variable-read:cli:env:pull", "env-variable-read:cli:env:rm", "env-variable-read:cli:pull", "env-variable-read:unknown-source", "env-variable-read:v0:env:pull", "env-variable-rotated", "shared-env-variable-create", "shared-env-variable-delete", "shared-env-variable-read", "shared-env-variable-update", "firewall-bypass-created", "firewall-bypass-deleted", "firewall-config-modified", "firewall-config-promoted", "firewall-config-removed", "firewall-managed-rulegroup-updated", "firewall-managed-ruleset-updated", "flags-segment", "flags-settings", "flag-created", "flag-updated", "flag-deleted", "flag-archived", "flag-unarchived", "flags-explorer-subscription", "flags-sdk-key", "flags-sdk-key-added", "flags-sdk-key-deleted", "flags-sdk-key-read", "instant-rollback-created", "integration-configuration-owner-changed", "integration-configuration-scope-change-confirmed", "integration-configurations-disabled", "integration-installation-billing-plan-updated", "integration-installation-completed", "integration-installation-permission-updated", "integration-installation-removed", "integration-scope-changed", "log-drain-created", "log-drain-deleted", "log-drain-disabled", "log-drain-enabled", "login", "manual-deployment-promotion-created", "microfrontend-group-added", "microfrontend-group-deleted", "microfrontend-group-updated", "microfrontend-project-added-to-group", "microfrontend-project-removed-from-group", "microfrontend-project-updated", "monitoring-disabled", "monitoring-enabled", "observability-disabled", "observability-enabled", "observability-plus-project-disabled", "observability-plus-project-enabled", "owner-blocked", "owner-unblocked", "owner-soft-blocked", "owner-soft-unblocked", "page-integrity-config-updated", "page-integrity-header-approved", "page-integrity-resource-approved", "page-integrity-resource-deleted", "page-integrity-resource-rejected", "passkey-created", "passkey-deleted", "passkey-updated", "preview-deployment-suffix-update", "privatelink-endpoint-created", "privatelink-endpoint-deleted", "privatelink-endpoint-updated", "production-branch-updated", "project-directory-listing", "project-analytics-disabled", "project-speed-insights-disabled", "project-analytics-enabled", "project-speed-insights-enabled", "project-automation-bypass", "project-affected-projects-deployments-updated", "project-external-rewrite-caching-updated", "project-build-command-updated", "project-framework-updated", "project-install-command-updated", "project-node-version-updated", "project-output-directory-updated", "project-prioritize-production-builds-updated", "project-root-directory-updated", "project-source-files-outside-root-directory-updated", "project-build-machine-updated", "project-client-cert-delete", "project-client-cert-upload", "project-connect-configurations", "project-created", "project-cron-jobs-toggled", "project-delegated-protection-enabled", "project-delegated-protection-updated", "project-delegated-protection-disabled", "project-delete", "project-domain-unverified", "project-domain-verified", "project-elastic-concurrency-updated", "project-auto-assign-custom-production-domains-updated", "project-preview-environment-branch-tracking-updated", "project-custom-environment-updated", "project-custom-environment-created", "project-custom-environment-deleted", "project-functions-beta-updated", "project-functions-fluid-disabled", "project-functions-fluid-enabled", "project-function-max-duration", "project-function-cpu-memory", "project-function-regions", "project-function-failover", "project-preview-deployment-suffix", "project-name", "project-git-repository-connected", "project-git-repository-disconnected", "project-git-pr-comments-toggled", "project-git-commit-comments-toggled", "project-git-repository-dispatch-events-toggled", "project-git-create-deployments-toggled", "project-git-require-verified-commits-toggled", "team-git-require-verified-commits-toggled", "project-git-commit-status-toggled", "project-git-lfs-toggled", "project-consolidated-git-commit-status-updated", "project-ignored-build-step-updated", "project-add-alias", "project-add-redirect", "project-domain-deleted", "project-domain-moved", "project-domain-updated", "project-member-removed-batch", "project-alias-configured-change", "project-member-added", "project-member-invited", "project-member-removed", "project-member-updated", "project-move-in-success", "project-move-out-failed", "project-move-out-started", "project-move-out-success", "project-oidc-token-created", "project-options-allowlist", "project-password-protection", "project-paused", "project-program-enrollment-changed", "project-rolling-release-enabled", "project-rolling-release-disabled", "project-rolling-release-configured", "project-rolling-release-started", "project-rolling-release-completed", "project-rolling-release-aborted", "project-rolling-release-approved", "project-rolling-release-timer", "project-rolling-release-paused", "project-rolling-release-continued", "project-rolling-release-suggested-actions-generated", "project-routes-version-promoted", "project-routes-version-restored", "project-oidc-issuer-mode-updated", "project-customer-success-code-visibility-updated", "project-git-fork-protection-updated", "project-protected-sourcemaps-updated", "project-build-logs-and-source-protection-updated", "project-deployment-retention-updated", "project-skew-protection-threshold-updated", "project-skew-protection-max-age-updated", "project-skew-protection-allowed-domains-updated", "project-sso-protection", "project-static-ips-updated", "project-trusted-ips", "project-trusted-sources", "project-unpaused", "project-web-analytics-disabled", "project-web-analytics-enabled", "protected-git-scope-added", "protected-git-scope-removed", "runtime-cache-purge-all", "scale", "scale-auto", "secondary-email-added", "secondary-email-removed", "secondary-email-verified", "secret-add", "secret-delete", "secret-rename", "security-plus-updated", "set-bio", "set-name", "set-profiles", "set-scale", "signup", "signup-via-bitbucket", "signup-via-github", "signup-via-gitlab", "speed-insights-settings-updated", "spend-created", "spend-deleted", "spend-updated", "storage-accept-tos", "storage-transfer-request-created", "storage-transfer-out-success", "storage-transfer-in-success", "storage-create", "storage-reset-credentials", "storage-update", "storage-connect-project", "storage-disconnect-project", "storage-update-project-connection", "storage-upgrade-project-connection-to-oidc", "storage-delete", "storage-accessed-data-browser", "storage-view-secret", "storage-inactive-store-deleted", "storage-resource-repl-command", "storage-disconnect-projects", "storage-access-token-set", "storage-set-locked", "ai-code-review", "ai-alert-investigation", "vercel-agent-team-trial-credits-applied", "team-avatar-update", "team-default-build-machine-updated", "team-delete", "strict-deployment-protection-settings", "strict-shareable-links", "team-domain-verification-created", "team-domain-verification-deleted", "team-domain-verification-verified", "team-emu-updated", "vercel-toolbar", "team-email-domain-update", "team-invite-bulk-delete", "team-member-add", "team-member-confirm-request", "team-member-decline-request", "team-member-delete", "team-member-entitlement-added", "team-member-entitlement-canceled", "team-member-entitlement-reactivated", "team-member-entitlement-removed", "team-member-join", "team-member-leave", "team-member-request-access", "team-member-role-update", "team-mfa-enforcement-updated", "team-invite-link-created", "team-invite-link-deleted", "concurrent-builds-update", "team-ended-trial", "team-paid-invoice", "team-invite-code-reset", "team-name-update", "team-program-enrollment-changed", "team-remote-caching-update", "enforce-sensitive-environment-variables", "show-ip-addresses", "team-saml-enforced", "team-saml-roles", "team-ip-blocking-rules-created", "team-ip-blocking-rules-removed", "team-tokens-invalidated", "audit-log-export-requested", "audit-log-export-downloaded", "team-slug-update", "unlink-login-connection", "user-mfa-removed", "user-delete", "user-mfa-challenge-verified", "user-mfa-configuration-updated", "user-mfa-recovery-codes-regenerated", "user-mfa-totp-verification-started", "user-mfa-totp-verified", "user-primary-email-updated", "user-token-created", "username", "alert-rule-created", "alert-rule-updated", "alert-rule-deleted", "vulnerability-banner-dismissed", "vpc-peering-connection-accepted", "vpc-peering-connection-deleted", "vpc-peering-connection-rejected", "vpc-peering-connection-updated", "web-analytics-tier-updated", "webhook-created", "webhook-deleted", "webhook-updated", "v0-chat-created", "v0-chat-ai-usage", "v0-chat-message-sent", "workflow-deployment-key-accessed" ], "description": "Event type names that supersede this deprecated event type." }, "type": "array", "description": "Event type names that supersede this deprecated event type." } }, "required": [ "categories", "description", "name" ], "type": "object", "description": "A user-facing event type." }, "ListEventTypesResponse": { "properties": { "types": { "items": { "$ref": "#/components/schemas/ListEventType" }, "type": "array" }, "categories": { "items": { "properties": { "name": { "type": "string", "enum": [ "account", "ai", "ai-gateway", "billing", "deployment", "domain", "edge", "env-variable", "feature-flags", "firewall", "integration", "microfrontends", "network", "observability", "project", "security", "storage", "team", "v0", "vercel-app", "workflow", "other" ] }, "label": { "type": "string" } }, "required": [ "label", "name" ], "type": "object" }, "type": "array" } }, "required": [ "categories", "types" ], "type": "object", "description": "Response returned by the List Event Types endpoint." }, "Flag": { "properties": { "description": { "type": "string" }, "maintainerIds": { "items": { "type": "string" }, "type": "array" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "experiment": { "properties": { "name": { "type": "string" }, "id": { "type": "string" }, "numVariants": { "type": "number" }, "surfaceArea": { "type": "string" }, "stickyRequirement": { "type": "boolean", "enum": [ false, true ] }, "layer": { "type": "string" }, "guardrailMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "percentage", "currency", "count" ] }, "metricUnit": { "type": "string", "enum": [ "user", "session", "visitor" ] }, "directionality": { "type": "string", "enum": [ "increaseIsGood", "decreaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "hypothesis": { "type": "string" }, "device": { "type": "string", "enum": [ "android", "ios", "desktop", "mweb" ] }, "controlVariantId": { "type": "string" }, "startedAt": { "type": "number" }, "endedAt": { "type": "number" }, "decision": { "type": "string" }, "decisionReason": { "type": "string" }, "duration": { "type": "number" }, "durationUnit": { "type": "string", "enum": [ "days", "exposures" ] }, "allocationPercent": { "type": "number" }, "allocationUnit": { "type": "string", "enum": [ "cookieId", "visitorId", "userId" ] }, "primaryMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "percentage", "currency", "count" ] }, "metricUnit": { "type": "string", "enum": [ "user", "session", "visitor" ] }, "directionality": { "type": "string", "enum": [ "increaseIsGood", "decreaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "status": { "type": "string", "enum": [ "draft", "running", "paused", "closed" ] } }, "required": [ "allocationUnit", "primaryMetrics", "status" ], "type": "object" }, "variants": { "items": { "type": "object" }, "type": "array" }, "id": { "type": "string" }, "environments": { "additionalProperties": { "properties": { "reuse": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "environment": { "type": "string" } }, "required": [ "active", "environment" ], "type": "object" }, "targets": { "additionalProperties": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "type": "object" }, "revision": { "type": "number" }, "pausedOutcome": { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, "fallthrough": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "active": { "type": "boolean", "enum": [ false, true ] }, "rules": { "items": { "properties": { "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "conditions": { "items": { "properties": { "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "type": { "type": "string", "enum": [ "list/inline", "list" ] }, "items": { "items": { "oneOf": [ { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ], "type": "object" }, { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "regex" ] }, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "cmp": { "type": "string", "enum": [ "eq", "!eq", "oneOf", "!oneOf", "containsAllOf", "containsAnyOf", "containsNoneOf", "startsWith", "!startsWith", "endsWith", "!endsWith", "contains", "!contains", "ex", "!ex", "gt", "gte", "lt", "lte", "regex", "!regex", "before", "after" ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" } }, "required": [ "active", "fallthrough", "pausedOutcome", "rules" ], "type": "object" }, "type": "object" }, "kind": { "type": "string", "enum": [ "string", "number", "boolean", "json" ] }, "revision": { "type": "number" }, "seed": { "type": "number" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "slug": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "createdBy": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "flag" ] }, "metadata": { "properties": { "creator": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" } }, "type": "object" } }, "required": [ "createdAt", "createdBy", "environments", "id", "kind", "ownerId", "projectId", "revision", "seed", "slug", "state", "typeName", "updatedAt", "variants" ], "type": "object" }, "Segment": { "properties": { "description": { "type": "string" }, "createdBy": { "type": "string" }, "usedByFlags": { "items": { "type": "string" }, "type": "array" }, "usedBySegments": { "items": { "type": "string" }, "type": "array" }, "id": { "type": "string" }, "label": { "type": "string" }, "slug": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "segment" ] }, "data": { "properties": { "rules": { "items": { "properties": { "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "all" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "passPromille": { "type": "number" } }, "required": [ "base", "passPromille", "type" ], "type": "object" } ] }, "conditions": { "items": { "properties": { "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "type": { "type": "string", "enum": [ "list/inline", "list" ] }, "items": { "items": { "oneOf": [ { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ], "type": "object" }, { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "regex" ] }, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "cmp": { "type": "string", "enum": [ "eq", "!eq", "oneOf", "!oneOf", "containsAllOf", "containsAnyOf", "containsNoneOf", "startsWith", "!startsWith", "endsWith", "!endsWith", "contains", "!contains", "ex", "!ex", "gt", "gte", "lt", "lte", "regex", "!regex", "before", "after" ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" }, "include": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "exclude": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" } }, "type": "object" }, "hint": { "type": "string" }, "metadata": { "properties": { "creator": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" } }, "type": "object" } }, "required": [ "createdAt", "data", "hint", "id", "label", "projectId", "slug", "typeName", "updatedAt" ], "type": "object" }, "FlagsSdkKey": { "properties": { "hashKey": { "type": "string" }, "projectId": { "type": "string" }, "type": { "type": "string", "enum": [ "server", "mobile", "client" ] }, "environment": { "type": "string" }, "createdBy": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "label": { "type": "string" }, "deletedAt": { "type": "number" }, "partialKeyValue": { "type": "string", "description": "Partially-masked representation of the SDK key value, safe to display in UIs. The value is the `vf__` prefix followed by the first 3 characters of the secret portion and a fixed 8-character `*` mask (e.g. `vf_server_abc********`)." }, "keyValue": { "type": "string", "description": "Cleartext value of the SDK key" }, "tokenValue": { "type": "string", "description": "Cleartext value of the Edge Config token" }, "connectionString": { "type": "string", "description": "Connection string for the SDK" } }, "required": [ "createdAt", "createdBy", "environment", "hashKey", "partialKeyValue", "projectId", "type", "updatedAt" ], "type": "object" }, "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." }, "SandboxInjectionRule": { "properties": { "domain": { "type": "string", "description": "The domain (or pattern) that this injection rule applies to. Supports wildcards like *.vercel.com.", "example": "api.vercel.com" }, "headerNames": { "items": { "type": "string" }, "type": "array", "description": "The names of HTTP headers that have value that will be injected for requests to this domain.", "example": [ "Authorization", "X-API-Key" ] } }, "required": [ "domain" ], "type": "object", "description": "HTTP header injection rules for outgoing requests matching specific domains." }, "SandboxNetworkPolicy": { "properties": { "mode": { "type": "string", "enum": [ "allow-all", "deny-all", "custom" ], "description": "The network policy mode. - 'allow-all': All traffic is allowed. - 'deny-all': All traffic is blocked. - 'custom': Traffic is controlled by explicit allow/deny rules.", "example": "custom" }, "allowedDomains": { "items": { "type": "string" }, "type": "array", "description": "List of domain names the sandbox is allowed to connect to. Supports wildcard patterns (e.g., \"*.vercel.com\" matches all subdomains).", "example": [ "api.vercel.com", "*.example.com" ] }, "allowedCIDRs": { "items": { "type": "string" }, "type": "array", "description": "List of IP address ranges (in CIDR notation) the sandbox is allowed to connect to.", "example": [ "10.0.0.0/8" ] }, "deniedCIDRs": { "items": { "type": "string" }, "type": "array", "description": "List of IP address ranges (in CIDR notation) the sandbox is blocked from connecting to. These rules take precedence over all allowed rules.", "example": [ "10.0.0.0/8" ] }, "injectionRules": { "items": { "$ref": "#/components/schemas/SandboxInjectionRule" }, "type": "array", "description": "HTTP header injection rules for outgoing requests matching specific domains." } }, "required": [ "mode" ], "type": "object", "description": "The network policy applied to this sandbox, if any." }, "Sandbox": { "properties": { "id": { "type": "string", "description": "The unique identifier of the sandbox.", "example": "sbx_123a6c5209bc3778245d011443644c8d27dc2c50" }, "memory": { "type": "number", "description": "Memory allocated to this sandbox in MB.", "example": 2048 }, "vcpus": { "type": "number", "description": "Number of vCPUs allocated to this sandbox.", "example": 2 }, "region": { "type": "string", "description": "The region where the sandbox is hosted.", "example": "iad1" }, "runtime": { "type": "string", "description": "The runtime of the sandbox.", "example": "node22" }, "timeout": { "type": "number", "description": "The maximum amount of time the sandbox will run for in milliseconds.", "example": 3600000 }, "status": { "type": "string", "enum": [ "failed", "aborted", "pending", "stopping", "snapshotting", "running", "stopped" ], "description": "The status of the sandbox.", "example": "running" }, "requestedAt": { "type": "number", "description": "The time when the sandbox was requested, in milliseconds since the epoch.", "example": 1750344501629 }, "startedAt": { "type": "number", "description": "The time when the sandbox was started, in milliseconds since the epoch.", "example": 1750344501629 }, "cwd": { "type": "string", "description": "The working directory of the sandbox.", "example": "/vercel/sandbox" }, "requestedStopAt": { "type": "number", "description": "The time when the sandbox was requested to stop, in milliseconds since the epoch.", "example": 1750344501629 }, "stoppedAt": { "type": "number", "description": "The time when the sandbox was stopped, in milliseconds since the epoch.", "example": 1750344501629 }, "abortedAt": { "type": "number", "description": "The time when the sandbox was aborted, in milliseconds since the epoch.", "example": 1750344501629 }, "duration": { "type": "number", "description": "The duration of the sandbox in milliseconds.", "example": 3600000 }, "sourceSnapshotId": { "type": "string", "description": "The unique identifier of the snapshot associated with this sandbox, if any.", "example": "snap_123a6c5209bc3778245d011443644c8d27dc2c50" }, "snapshottedAt": { "type": "number", "description": "The time when a snapshot was requested, in milliseconds since the epoch.", "example": 1750344501629 }, "createdAt": { "type": "number", "description": "The time when the sandbox was created, in milliseconds since the epoch.", "example": 1750344501629 }, "updatedAt": { "type": "number", "description": "The last time the sandbox was updated, in milliseconds since the epoch.", "example": 1750344501629 }, "networkPolicy": { "$ref": "#/components/schemas/SandboxNetworkPolicy" }, "activeCpuDurationMs": { "type": "number", "description": "The amount of CPU time the sandbox consumed, if available, in milliseconds. This value is only available once the sandbox is stopped, and only if it stopped successfully.", "example": 42 }, "networkTransfer": { "properties": { "ingress": { "type": "number" }, "egress": { "type": "number" } }, "required": [ "egress", "ingress" ], "type": "object", "description": "The quantity of data transfered to and from the sandbox, in bytes. This value is only available once the sandbox is stopped, and only if it stopped successfully.", "example": { "in": 12543852, "out": 15368 } } }, "required": [ "createdAt", "cwd", "id", "memory", "region", "requestedAt", "runtime", "status", "timeout", "updatedAt", "vcpus" ], "type": "object", "description": "This object contains information related to a Vercel Sandbox." }, "Snapshot": { "properties": { "id": { "type": "string", "description": "The unique identifier of the snapshot.", "example": "snap_123a6c5209bc3778245d011443644c8d27dc2c50" }, "sourceSessionId": { "type": "string", "description": "The unique identifier of the session from which the snapshot was created.", "example": "sbx_123a6c5209bc3778245d011443644c8d27dc2c50" }, "region": { "type": "string", "description": "The region where the snapshot is stored.", "example": "iad1" }, "status": { "type": "string", "enum": [ "failed", "created", "deleted" ], "description": "The status of the snapshot.", "example": "created" }, "sizeBytes": { "type": "number", "description": "The size of the snapshot in bytes.", "example": 104857600 }, "expiresAt": { "type": "number", "description": "The time when the snapshot will expire, in milliseconds since the epoch. If not set, the snapshot does not have any expiration.", "example": 1750344501629 }, "createdAt": { "type": "number", "description": "The time when the snapshot was created, in milliseconds since the epoch.", "example": 1750344501629 }, "updatedAt": { "type": "number", "description": "The last time the snapshot was updated, in milliseconds since the epoch.", "example": 1750344501629 }, "lastUsedAt": { "type": "number", "description": "The last time the snapshot was used (e.g. to resume or create a sandbox), in milliseconds since the epoch. Falls back to `createdAt` for older snapshots that predate this field.", "example": 1750344501629 }, "creationMethod": { "type": "string", "enum": [ "manual", "automatic" ], "description": "The method used to create the snapshot.", "example": "manual" }, "parentId": { "type": "string", "description": "The unique identifier of the parent snapshot, if this snapshot was created from another snapshot.", "example": "snap_parent123" } }, "required": [ "createdAt", "id", "lastUsedAt", "region", "sizeBytes", "sourceSessionId", "status", "updatedAt" ], "type": "object", "description": "This object contains information related to a Snapshot of a Vercel Sandbox session (v2 API)." }, "SandboxPublicRoute": { "properties": { "url": { "type": "string", "description": "A public URL to access the corresponding port in the Sandbox." }, "port": { "type": "number", "description": "The user port number that the route is mapped to." }, "subdomain": { "type": "string", "description": "The subdomain assigned to this route." }, "system": { "type": "boolean", "enum": [ true ], "description": "Whether the route is reserved by the system (e.g. for internal use)." } }, "required": [ "port", "subdomain", "url" ], "type": "object", "description": "This object represents a public route in a Vercel Sandbox." }, "SandboxCommand": { "properties": { "id": { "type": "string", "description": "The ID of the command.", "example": "cmd_123a6c5209bc3778245d011443644c8d27dc2c50" }, "name": { "type": "string", "description": "The name of the command.", "example": "npm" }, "args": { "items": { "type": "string" }, "type": "array", "description": "The arguments of the command.", "example": [ "run", "build" ] }, "cwd": { "type": "string", "description": "The current working directory of the command.", "example": "/vercel/sandbox" }, "sandboxId": { "type": "string", "description": "The ID of the sandbox associated with the command.", "example": "sbx_123a6c5209bc3778245d011443644c8d27dc2c50" }, "exitCode": { "nullable": true, "type": "number", "description": "If the command did finish, the exit code.", "example": 0 }, "startedAt": { "type": "number", "description": "When the command was started, in milliseconds since the epoch.", "example": 1673123456789 } }, "required": [ "args", "cwd", "exitCode", "id", "name", "sandboxId", "startedAt" ], "type": "object", "description": "This object represents command run in a Vercel Sandbox." }, "NamedSandbox": { "properties": { "name": { "type": "string", "description": "The unique identifier of the sandbox.", "example": "my-sandbox" }, "currentSnapshotId": { "type": "string", "description": "Current snapshot ID that the named sandbox is pointing to." }, "currentSessionId": { "type": "string", "description": "Current session ID the sandbox is pointing to." }, "status": { "type": "string", "enum": [ "stopping", "running", "stopped" ], "description": "The status of the current sandbox.", "example": "running" }, "statusUpdatedAt": { "type": "number", "description": "The time when the sandbox status was last updated, in milliseconds since the epoch.", "example": 1750344501629 }, "persistent": { "type": "boolean", "enum": [ false, true ], "description": "Whether the sandbox persists its state across restarts via automatic snapshots.", "example": true }, "region": { "type": "string", "description": "The region the sandbox runs in.", "example": "iad1" }, "vcpus": { "type": "number", "description": "Number of virtual CPUs allocated.", "example": 2 }, "memory": { "type": "number", "description": "Memory allocated in MB.", "example": 1024 }, "runtime": { "type": "string", "description": "Runtime identifier.", "example": "node22" }, "timeout": { "type": "number", "description": "Timeout in milliseconds.", "example": 300000 }, "snapshotExpiration": { "type": "number", "description": "Default snapshot expiration time in milliseconds. 0 means no expiration.", "example": 604800000 }, "snapshotKeepLast": { "properties": { "count": { "type": "number", "description": "Number of most recent snapshots to keep.", "example": 5 }, "expiration": { "type": "number", "description": "Expiration time in milliseconds for kept snapshots.", "example": 604800000 }, "deleteEvicted": { "type": "boolean", "enum": [ false, true ], "description": "Whether to immediately delete evicted snapshots.", "example": true } }, "required": [ "count", "deleteEvicted" ], "type": "object", "description": "Keep-last snapshot configuration." }, "networkPolicy": { "properties": { "mode": { "type": "string", "enum": [ "allow-all", "deny-all", "custom", "default-allow", "default-deny" ] }, "allowedDomains": { "items": { "type": "string" }, "type": "array" }, "allowedCIDRs": { "items": { "type": "string" }, "type": "array" }, "deniedCIDRs": { "items": { "type": "string" }, "type": "array" } }, "required": [ "mode" ], "type": "object", "description": "Network policy configuration." }, "totalEgressBytes": { "type": "number", "description": "Cumulative egress bytes across all sandbox runs.", "example": 4096 }, "totalIngressBytes": { "type": "number", "description": "Cumulative ingress bytes across all sandbox runs.", "example": 2048 }, "totalActiveCpuDurationMs": { "type": "number", "description": "Cumulative active CPU duration in milliseconds across all sandbox runs.", "example": 5000 }, "totalDurationMs": { "type": "number", "description": "Cumulative wall-clock duration in milliseconds across all sandbox runs.", "example": 60000 }, "cwd": { "type": "string", "description": "The working directory of the sandbox.", "example": "/vercel/sandbox" }, "tags": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Key-value tags attached to the named sandbox.", "example": { "team": "hive", "user": "bob" } }, "createdAt": { "type": "number", "description": "The time when the named sandbox was created, in milliseconds since the epoch.", "example": 1750344501629 }, "updatedAt": { "type": "number", "description": "The time when the named sandbox was last updated, in milliseconds since the epoch.", "example": 1750344501629 } }, "required": [ "createdAt", "currentSessionId", "name", "persistent", "status", "statusUpdatedAt", "updatedAt" ], "type": "object", "description": "This object contains information related to a Vercel NamedSandbox." }, "Session": { "properties": { "sourceSandboxName": { "type": "string", "description": "The name of the source sandbox.", "example": "my-sandbox" }, "projectId": { "type": "string", "description": "The unique identifier of the project associated with this session.", "example": "prj_123a6c5209bc3778245d011443644c8d27dc2c50" }, "id": { "type": "string", "description": "The unique identifier of the sandbox.", "example": "sbx_123a6c5209bc3778245d011443644c8d27dc2c50" }, "memory": { "type": "number", "description": "Memory allocated to this sandbox in MB.", "example": 2048 }, "vcpus": { "type": "number", "description": "Number of vCPUs allocated to this sandbox.", "example": 2 }, "region": { "type": "string", "description": "The region where the sandbox is hosted.", "example": "iad1" }, "runtime": { "type": "string", "description": "The runtime of the sandbox.", "example": "node22" }, "timeout": { "type": "number", "description": "The maximum amount of time the sandbox will run for in milliseconds.", "example": 3600000 }, "status": { "type": "string", "enum": [ "failed", "aborted", "pending", "stopping", "snapshotting", "running", "stopped" ], "description": "The status of the sandbox.", "example": "running" }, "requestedAt": { "type": "number", "description": "The time when the sandbox was requested, in milliseconds since the epoch.", "example": 1750344501629 }, "startedAt": { "type": "number", "description": "The time when the sandbox was started, in milliseconds since the epoch.", "example": 1750344501629 }, "cwd": { "type": "string", "description": "The working directory of the sandbox.", "example": "/vercel/sandbox" }, "requestedStopAt": { "type": "number", "description": "The time when the sandbox was requested to stop, in milliseconds since the epoch.", "example": 1750344501629 }, "stoppedAt": { "type": "number", "description": "The time when the sandbox was stopped, in milliseconds since the epoch.", "example": 1750344501629 }, "abortedAt": { "type": "number", "description": "The time when the sandbox was aborted, in milliseconds since the epoch.", "example": 1750344501629 }, "duration": { "type": "number", "description": "The duration of the sandbox in milliseconds.", "example": 3600000 }, "sourceSnapshotId": { "type": "string", "description": "The unique identifier of the snapshot associated with this sandbox, if any.", "example": "snap_123a6c5209bc3778245d011443644c8d27dc2c50" }, "snapshottedAt": { "type": "number", "description": "The time when a snapshot was requested, in milliseconds since the epoch.", "example": 1750344501629 }, "createdAt": { "type": "number", "description": "The time when the sandbox was created, in milliseconds since the epoch.", "example": 1750344501629 }, "updatedAt": { "type": "number", "description": "The last time the sandbox was updated, in milliseconds since the epoch.", "example": 1750344501629 }, "networkPolicy": { "$ref": "#/components/schemas/SandboxNetworkPolicy" }, "activeCpuDurationMs": { "type": "number", "description": "The amount of CPU time the sandbox consumed, if available, in milliseconds. This value is only available once the sandbox is stopped, and only if it stopped successfully.", "example": 42 }, "networkTransfer": { "properties": { "ingress": { "type": "number" }, "egress": { "type": "number" } }, "required": [ "egress", "ingress" ], "type": "object", "description": "The quantity of data transfered to and from the sandbox, in bytes. This value is only available once the sandbox is stopped, and only if it stopped successfully.", "example": { "in": 12543852, "out": 15368 } } }, "required": [ "createdAt", "cwd", "id", "memory", "projectId", "region", "requestedAt", "runtime", "sourceSandboxName", "status", "timeout", "updatedAt", "vcpus" ], "type": "object", "description": "This object contains information related to a Vercel Sandbox Session. v2 endpoints return \"session\" instead of \"sandbox\" as the response wrapper key." }, "SessionCommand": { "properties": { "id": { "type": "string", "description": "The ID of the command.", "example": "cmd_123a6c5209bc3778245d011443644c8d27dc2c50" }, "name": { "type": "string", "description": "The name of the command.", "example": "npm" }, "args": { "items": { "type": "string" }, "type": "array", "description": "The arguments of the command.", "example": [ "run", "build" ] }, "cwd": { "type": "string", "description": "The current working directory of the command.", "example": "/vercel/sandbox" }, "sessionId": { "type": "string", "description": "The ID of the session associated with the command.", "example": "sbx_123a6c5209bc3778245d011443644c8d27dc2c50" }, "exitCode": { "nullable": true, "type": "number", "description": "If the command did finish, the exit code.", "example": 0 }, "startedAt": { "type": "number", "description": "When the command was started, in milliseconds since the epoch.", "example": 1673123456789 } }, "required": [ "args", "cwd", "exitCode", "id", "name", "sessionId", "startedAt" ], "type": "object", "description": "This object represents a command run in a Vercel Sandbox session (v2 API)." }, "InvitedTeamMember": { "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.", "example": "john@user.co" }, "role": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ], "description": "The role used for the invitation", "example": "MEMBER" }, "teamRoles": { "items": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ], "description": "The team roles of the user", "example": [ "MEMBER" ] }, "type": "array", "description": "The team roles of the user", "example": [ "MEMBER" ] }, "teamPermissions": { "items": { "type": "string", "enum": [ "IntegrationManager", "CreateProject", "FullProductionDeployment", "UsageViewer", "EnvVariableManager", "EnvironmentManager", "V0Builder", "V0Chatter", "V0Viewer" ], "description": "The team permissions of the user", "example": [ "CreateProject" ] }, "type": "array", "description": "The team permissions of the user", "example": [ "CreateProject" ] } }, "required": [ "email", "role", "uid", "username" ], "type": "object", "description": "The member was successfully added to the team." }, "Team": { "properties": { "connect": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "creatorId": { "type": "string", "description": "The ID of the user who created the Team.", "example": "R6efeCJQ2HKXywuasPDc0fOWB" }, "updatedAt": { "type": "number", "description": "Timestamp (in milliseconds) of when the Team was last updated.", "example": 1611796915677 }, "emailDomain": { "nullable": true, "type": "string", "description": "Hostname that'll be matched with emails on sign-up to automatically join the Team.", "example": "example.com" }, "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 }, "lastSyncedAt": { "type": "number", "description": "Timestamp (in milliseconds) of when the last directory sync was performed.", "example": 1611796915677 }, "syncState": { "type": "string", "enum": [ "SETUP", "ACTIVE" ], "description": "Controls whether directory sync events are processed. - 'SETUP': Directory connected but role mappings not yet configured. Events are acknowledged but not processed. - 'ACTIVE': Fully configured. Events are processed normally. - undefined: Legacy directory (pre-feature), treat as 'ACTIVE' for backwards compatibility." } }, "required": [ "connectedAt", "state", "status", "type" ], "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 }, "lastSyncedAt": { "type": "number", "description": "Timestamp (in milliseconds) of when the last directory sync was performed.", "example": 1611796915677 }, "syncState": { "type": "string", "enum": [ "SETUP", "ACTIVE" ], "description": "Controls whether directory sync events are processed. - 'SETUP': Directory connected but role mappings not yet configured. Events are acknowledged but not processed. - 'ACTIVE': Fully configured. Events are processed normally. - undefined: Legacy directory (pre-feature), treat as 'ACTIVE' for backwards compatibility." } }, "required": [ "connectedAt", "state", "type" ], "type": "object", "description": "Information for the Directory Sync configuration." }, "enforced": { "type": "boolean", "enum": [ false, true ], "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." }, "defaultRedirectUri": { "type": "string", "enum": [ "vercel.com", "v0.dev", "v0.app" ], "description": "The default redirect URI to use after successful SAML authentication." }, "roles": { "additionalProperties": { "oneOf": [ { "properties": { "accessGroupId": { "type": "string" } }, "required": [ "accessGroupId" ], "type": "object", "description": "When \"Directory Sync\" is configured, this object contains a mapping of which Directory Group (by ID) should be assigned to which Vercel Team \"role\"." }, { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] } ] }, "type": "object", "description": "When \"Directory Sync\" is configured, this object contains a mapping of which Directory Group (by ID) should be assigned to which Vercel Team \"role\"." } }, "required": [ "enforced" ], "type": "object", "description": "When \"Single Sign-On (SAML)\" is configured, this object contains information regarding the configuration of the Identity Provider (IdP)." }, "inviteCode": { "type": "string", "description": "Code that can be used to join this Team. Only visible to Team owners.", "example": "hasihf9e89" }, "description": { "nullable": true, "type": "string", "description": "A short description of the Team.", "example": "Our mission is to make cloud computing accessible to everyone." }, "defaultRoles": { "properties": { "teamRoles": { "items": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "type": "array" }, "teamPermissions": { "items": { "type": "string", "enum": [ "IntegrationManager", "CreateProject", "FullProductionDeployment", "UsageViewer", "EnvVariableManager", "EnvironmentManager", "V0Builder", "V0Chatter", "V0Viewer" ] }, "type": "array" } }, "type": "object", "description": "Default roles for the team." }, "stagingPrefix": { "type": "string", "description": "The prefix that is prepended to automatic aliases." }, "resourceConfig": { "properties": { "concurrentBuilds": { "type": "number", "description": "The total amount of concurrent builds that can be used." }, "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether every build for this team / user has elastic concurrency enabled automatically." }, "edgeConfigSize": { "type": "number", "description": "The maximum size in kilobytes of an Edge Config. Only specified if a custom limit is set." }, "edgeConfigs": { "type": "number", "description": "The maximum number of edge configs an account can create." }, "kvDatabases": { "type": "number", "description": "The maximum number of kv databases an account can create." }, "blobStores": { "type": "number", "description": "The maximum number of blob stores an account can create." }, "postgresDatabases": { "type": "number", "description": "The maximum number of postgres databases an account can create." }, "buildEntitlements": { "properties": { "enhancedBuilds": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "buildMachine": { "properties": { "default": { "type": "string", "enum": [ "enhanced", "turbo", "standard", "elastic" ], "description": "Default build machine type for new builds" } }, "type": "object", "description": "Build machine configuration" } }, "type": "object" }, "previewDeploymentSuffix": { "nullable": true, "type": "string", "description": "The hostname that is current set as preview deployment suffix.", "example": "example.dev" }, "platform": { "type": "boolean", "enum": [ false, true ], "description": "Whether the team is a platform team.", "example": true }, "disableHardAutoBlocks": { "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "remoteCaching": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "Is remote caching enabled for this team" }, "defaultDeploymentProtection": { "properties": { "passwordProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string" } }, "required": [ "deploymentType" ], "type": "object" }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string" } }, "required": [ "deploymentType" ], "type": "object" } }, "type": "object", "description": "Default deployment protection for this team null indicates protection is disabled" }, "defaultExpirationSettings": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Default deployment expiration settings for this team" }, "defaultProjectJobs": { "properties": { "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array", "description": "Default job configuration applied to new projects created in this team." } }, "required": [ "targets" ], "type": "object", "description": "Default job configuration applied to new projects created in this team." }, "typecheck": { "properties": { "targets": { "items": { "type": "string" }, "type": "array", "description": "Default job configuration applied to new projects created in this team." } }, "required": [ "targets" ], "type": "object", "description": "Default job configuration applied to new projects created in this team." } }, "type": "object", "description": "Default job configuration applied to new projects created in this team." }, "enablePreviewFeedback": { "nullable": true, "type": "string", "enum": [ "default", "on", "off", "on-force", "off-force", "default-force", null ], "description": "Whether toolbar is enabled on preview deployments" }, "enableProductionFeedback": { "nullable": true, "type": "string", "enum": [ "default", "on", "off", "on-force", "off-force", "default-force", null ], "description": "Whether toolbar is enabled on production deployments" }, "sensitiveEnvironmentVariablePolicy": { "nullable": true, "type": "string", "enum": [ "default", "on", "off", null ], "description": "Sensitive environment variable policy for this team" }, "hideIpAddresses": { "nullable": true, "type": "boolean", "enum": [ false, true, null ], "description": "Indicates if IP addresses should be accessible in observability (o11y) tooling" }, "hideIpAddressesInLogDrains": { "nullable": true, "type": "boolean", "enum": [ false, true, null ], "description": "Indicates if IP addresses should be accessible in log drains" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "supportUntil": { "type": "number" }, "default": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "When enabled, all projects in the team require commits to be signed and verified by the git provider before deployments will be created. Projects may override this via `project.gitProviderOptions.requireVerifiedCommits` (gated by `Project:Update`)." }, "strictDeploymentProtectionSettings": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "updatedAt": { "type": "number" } }, "required": [ "enabled", "updatedAt" ], "type": "object", "description": "When enabled, deployment protection settings require stricter permissions (owner-only)." }, "strictShareableLinks": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "updatedAt": { "type": "number" } }, "required": [ "enabled", "updatedAt" ], "type": "object", "description": "When enabled, creating shareable links requires Owner role." }, "nsnbConfig": { "properties": { "preference": { "type": "string", "enum": [ "auto-approval", "manual-approval", "block" ] } }, "required": [ "preference" ], "type": "object", "description": "NSNB configuration for the team." }, "personalAccessTokensInvalidatedAt": { "type": "number", "description": "Timestamp (ms) after which personal access tokens created at or before this time are considered invalid for this team." }, "appTokensInvalidatedAt": { "type": "number", "description": "Timestamp (ms) after which Vercel App tokens created at or before this time are considered invalid for this team." }, "apiKeysInvalidatedAt": { "type": "number", "description": "Timestamp (ms) after which API keys created at or before this time are considered invalid for this team." }, "integrationTokensInvalidatedAt": { "type": "number", "description": "Timestamp (ms) after which integration tokens created at or before this time are considered invalid for this team." }, "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": { "uid": { "type": "string" }, "entitlements": { "items": { "properties": { "entitlement": { "type": "string" } }, "required": [ "entitlement" ], "type": "object" }, "type": "array" }, "teamId": { "type": "string" }, "confirmed": { "type": "boolean", "enum": [ true ] }, "accessRequestedAt": { "type": "number" }, "role": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "teamRoles": { "items": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "type": "array" }, "teamPermissions": { "items": { "type": "string", "enum": [ "IntegrationManager", "CreateProject", "FullProductionDeployment", "UsageViewer", "EnvVariableManager", "EnvironmentManager", "V0Builder", "V0Chatter", "V0Viewer" ] }, "type": "array" }, "createdAt": { "type": "number" }, "created": { "type": "number" }, "joinedFrom": { "properties": { "origin": { "type": "string", "enum": [ "link", "saml", "mail", "import", "teams", "github", "gitlab", "bitbucket", "dsync", "feedback", "organization-teams", "nsnb-auto-approve", "nsnb-hobby-upgrade", "nsnb-request-access", "nsnb-viewer-upgrade", "nsnb-invite", "nsnb-redeploy", "nsnb-redeploy-attribution-card" ] }, "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" } }, "required": [ "confirmed", "created", "createdAt", "role" ], "type": "object", "description": "The membership of the authenticated User in relation to the Team." }, "createdAt": { "type": "number", "description": "UNIX timestamp (in milliseconds) when the Team was created.", "example": 1630748523395 } }, "required": [ "avatar", "createdAt", "creatorId", "description", "id", "membership", "name", "slug", "stagingPrefix", "updatedAt" ], "type": "object", "description": "Data representing a Team.", "additionalProperties": true }, "TeamLimited": { "properties": { "limited": { "type": "boolean", "enum": [ true ], "description": "Property indicating that this Team data contains only limited information, due to the authentication token missing privileges to read the full Team data or due to team having MFA enforced and the user not having MFA enabled. Re-login with the Team's configured SAML Single Sign-On provider in order to upgrade the authentication token with the necessary privileges." }, "limitedBy": { "items": { "type": "string", "enum": [ "mfa", "scope" ] }, "type": "array" }, "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 }, "lastSyncedAt": { "type": "number", "description": "Timestamp (in milliseconds) of when the last directory sync was performed.", "example": 1611796915677 }, "syncState": { "type": "string", "enum": [ "SETUP", "ACTIVE" ], "description": "Controls whether directory sync events are processed. - 'SETUP': Directory connected but role mappings not yet configured. Events are acknowledged but not processed. - 'ACTIVE': Fully configured. Events are processed normally. - undefined: Legacy directory (pre-feature), treat as 'ACTIVE' for backwards compatibility." } }, "required": [ "connectedAt", "state", "status", "type" ], "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 }, "lastSyncedAt": { "type": "number", "description": "Timestamp (in milliseconds) of when the last directory sync was performed.", "example": 1611796915677 }, "syncState": { "type": "string", "enum": [ "SETUP", "ACTIVE" ], "description": "Controls whether directory sync events are processed. - 'SETUP': Directory connected but role mappings not yet configured. Events are acknowledged but not processed. - 'ACTIVE': Fully configured. Events are processed normally. - undefined: Legacy directory (pre-feature), treat as 'ACTIVE' for backwards compatibility." } }, "required": [ "connectedAt", "state", "type" ], "type": "object", "description": "Information for the Directory Sync configuration." }, "enforced": { "type": "boolean", "enum": [ false, true ], "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": { "uid": { "type": "string" }, "entitlements": { "items": { "properties": { "entitlement": { "type": "string" } }, "required": [ "entitlement" ], "type": "object" }, "type": "array" }, "teamId": { "type": "string" }, "confirmed": { "type": "boolean", "enum": [ true ] }, "accessRequestedAt": { "type": "number" }, "role": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "teamRoles": { "items": { "type": "string", "enum": [ "OWNER", "MEMBER", "DEVELOPER", "SECURITY", "BILLING", "VIEWER", "VIEWER_FOR_PLUS", "CONTRIBUTOR" ] }, "type": "array" }, "teamPermissions": { "items": { "type": "string", "enum": [ "IntegrationManager", "CreateProject", "FullProductionDeployment", "UsageViewer", "EnvVariableManager", "EnvironmentManager", "V0Builder", "V0Chatter", "V0Viewer" ] }, "type": "array" }, "createdAt": { "type": "number" }, "created": { "type": "number" }, "joinedFrom": { "properties": { "origin": { "type": "string", "enum": [ "link", "saml", "mail", "import", "teams", "github", "gitlab", "bitbucket", "dsync", "feedback", "organization-teams", "nsnb-auto-approve", "nsnb-hobby-upgrade", "nsnb-request-access", "nsnb-viewer-upgrade", "nsnb-invite", "nsnb-redeploy", "nsnb-redeploy-attribution-card" ] }, "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" } }, "required": [ "confirmed", "created", "createdAt", "role" ], "type": "object", "description": "The membership of the authenticated User in relation to the Team." }, "createdAt": { "type": "number", "description": "UNIX timestamp (in milliseconds) when the Team was created.", "example": 1630748523395 } }, "required": [ "avatar", "createdAt", "id", "limited", "limitedBy", "membership", "name", "slug" ], "type": "object", "description": "A limited form of data representing a Team, due to the authentication token missing privileges to read the full Team 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" }, "prefix": { "type": "string", "description": "The token's prefix, for identification purposes.", "example": "vcp_" }, "suffix": { "type": "string", "description": "The last few characters of the token, for identification purposes.", "example": "abc123" }, "origin": { "type": "string", "description": "The origin of how the token was created.", "example": "github" }, "scopes": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "sudo": { "properties": { "origin": { "type": "string", "enum": [ "totp", "webauthn", "recovery-code" ], "description": "Possible multi-factor origins" }, "expiresAt": { "type": "number" } }, "required": [ "expiresAt", "origin" ], "type": "object" }, "origin": { "type": "string", "enum": [ "app", "saml", "github", "github-webhook", "gitlab", "bitbucket", "email", "manual", "passkey", "otp", "sms", "invite", "google", "apple", "chatgpt", "emu" ] }, "createdAt": { "type": "number" }, "expiresAt": { "type": "number" } }, "required": [ "createdAt", "type" ], "type": "object", "description": "The access scopes granted to the token." }, { "properties": { "type": { "type": "string", "enum": [ "team" ] }, "teamId": { "type": "string" }, "origin": { "type": "string", "enum": [ "app", "saml", "github", "github-webhook", "gitlab", "bitbucket", "email", "manual", "passkey", "otp", "sms", "invite", "google", "apple", "chatgpt", "emu" ] }, "createdAt": { "type": "number" }, "expiresAt": { "type": "number" } }, "required": [ "createdAt", "teamId", "type" ], "type": "object", "description": "The access scopes granted to the token." } ] }, "type": "array", "description": "The access scopes granted to the token." }, "createdAt": { "type": "number", "description": "Timestamp (in milliseconds) of when the token was created.", "example": 1632816536002 }, "activeAt": { "type": "number", "description": "Timestamp (in milliseconds) of when the token was most recently used.", "example": 1632816536002 }, "expiresAt": { "type": "number", "description": "Timestamp (in milliseconds) of when the token expires.", "example": 1632816536002 }, "revokedAt": { "type": "number", "description": "Timestamp (in milliseconds) of when the token was revoked.", "example": 1632816536002 }, "leakedAt": { "type": "number", "description": "Timestamp (in milliseconds) of when the token was marked as leaked.", "example": 1632816536002 }, "leakedUrl": { "type": "string", "description": "URL where the token was discovered as leaked." } }, "required": [ "activeAt", "createdAt", "id", "name", "type" ], "type": "object", "description": "Authentication token metadata." }, "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": [ "ENTERPRISE_UNPAID_INVOICE", "SUBSCRIPTION_CANCELED", "SUBSCRIPTION_EXPIRED", "UNPAID_INVOICE", "ENTERPRISE_TRIAL_ENDED", "FAIR_USE_LIMITS_EXCEEDED", "BLOCKED_FOR_PLATFORM_ABUSE" ] }, "blockedDueToOverageType": { "type": "string", "enum": [ "analyticsUsage", "artifacts", "bandwidth", "blobTotalAdvancedRequests", "blobTotalAvgSizeInBytes", "blobTotalGetResponseObjectSizeInBytes", "blobTotalSimpleRequests", "connectDataTransfer", "dataCacheRead", "dataCacheWrite", "edgeConfigRead", "edgeConfigWrite", "edgeFunctionExecutionUnits", "edgeMiddlewareInvocations", "edgeRequestAdditionalCpuDuration", "edgeRequest", "elasticConcurrencyBuildSlots", "fastDataTransfer", "fastOriginTransfer", "fluidCpuDuration", "fluidDuration", "functionDuration", "functionInvocation", "imageOptimizationCacheRead", "imageOptimizationCacheWrite", "imageOptimizationTransformation", "logDrainsVolume", "monitoringMetric", "blobDataTransfer", "observabilityEvent", "onDemandConcurrencyMinutes", "runtimeCacheRead", "runtimeCacheWrite", "serverlessFunctionExecution", "sourceImages", "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, "type": "object", "description": "An object containing billing infomation associated with the User account." }, "resourceConfig": { "properties": { "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." }, "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ], "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "buildEntitlements": { "properties": { "enhancedBuilds": { "type": "boolean", "enum": [ false, true ], "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." }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ], "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." }, "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." }, "serverlessFunctionMaxMemorySize": { "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." }, "blobStores": { "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." }, "cronJobsPerProject": { "type": "number", "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "microfrontendGroupsPerTeam": { "type": "number", "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "microfrontendProjectsPerGroup": { "type": "number", "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "flagsExplorerOverridesThreshold": { "type": "number", "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "flagsExplorerUnlimitedOverrides": { "type": "boolean", "enum": [ false, true ], "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "customEnvironmentsPerProject": { "type": "number", "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "buildMachine": { "properties": { "default": { "type": "string", "enum": [ "enhanced", "turbo", "standard", "elastic" ], "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "purchaseType": { "type": "string", "enum": [ "enhanced", "turbo", "standard" ], "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "defaultPurchaseType": { "type": "string", "enum": [ "enhanced", "turbo", "standard" ], "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "cores": { "type": "number", "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "memory": { "type": "number", "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "machineSelectionType": { "type": "string", "enum": [ "fixed", "elastic" ], "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." }, "security": { "properties": { "customRules": { "type": "number", "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "ipBlocks": { "type": "number", "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "ipBypass": { "type": "number", "description": "An object containing infomation related to the amount of platform resources may be allocated to the User account." }, "rateLimit": { "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." }, "bulkRedirectsFreeLimitOverride": { "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": { "nullable": true, "type": "string", "enum": [ "list", "cards", null ] }, "favoritesViewPreference": { "nullable": true, "type": "string", "enum": [ "open", "closed", null ] }, "recentsViewPreference": { "nullable": true, "type": "string", "enum": [ "open", "closed", null ] } }, "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": { "nullable": true, "type": "string", "enum": [ "vercel", "gitlab", "bitbucket", "github", "github-limited", "github-custom-host", null ] }, "preferredScopesAndGitNamespaces": { "items": { "properties": { "scopeId": { "type": "string" }, "gitNamespaceId": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, "required": [ "gitNamespaceId", "scopeId" ], "type": "object" }, "type": "array" }, "dismissedToasts": { "items": { "properties": { "name": { "type": "string" }, "dismissals": { "items": { "properties": { "scopeId": { "type": "string" }, "createdAt": { "type": "number" } }, "required": [ "createdAt", "scopeId" ], "type": "object" }, "type": "array" } }, "required": [ "dismissals", "name" ], "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": { "properties": { "teamId": { "type": "string" }, "projectId": { "type": "string" } }, "required": [ "projectId", "teamId" ], "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", "enum": [ false, true ], "description": "Whether the user has a trial available for a paid plan subscription." }, "remoteCaching": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "remote caching settings" }, "dataCache": { "properties": { "excessBillingEnabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "data cache settings" }, "featureBlocks": { "properties": { "webAnalytics": { "properties": { "blockedFrom": { "type": "number" }, "blockedUntil": { "type": "number" }, "isCurrentlyBlocked": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "isCurrentlyBlocked" ], "type": "object" } }, "type": "object", "description": "Feature blocks for the user" }, "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." }, "isEnterpriseManaged": { "type": "boolean", "enum": [ false, true ], "description": "Indicates whether the user is managed by an enterprise." } }, "required": [ "avatar", "billing", "createdAt", "defaultTeamId", "email", "hasTrialAvailable", "id", "name", "resourceConfig", "softBlock", "stagingPrefix", "username" ], "type": "object", "description": "Data for the currently authenticated User." }, "AuthUserLimited": { "properties": { "limited": { "type": "boolean", "enum": [ true ], "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." }, "isEnterpriseManaged": { "type": "boolean", "enum": [ false, true ], "description": "Indicates whether the user is managed by an enterprise." } }, "required": [ "avatar", "defaultTeamId", "email", "id", "limited", "name", "username" ], "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." }, "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." } }, "required": [ "mode", "name", "type" ], "type": "object", "description": "A deployment file tree entry" }, "VercelBaseError": { "type": "object", "required": [ "code", "message" ], "properties": { "code": { "type": "string" }, "message": { "type": "string" } } }, "VercelForbiddenError": { "type": "object", "required": [ "error" ], "properties": { "error": { "allOf": [ { "$ref": "#/components/schemas/VercelBaseError" }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string" } } } ] } } }, "VercelNotFoundError": { "type": "object", "required": [ "error" ], "properties": { "error": { "allOf": [ { "$ref": "#/components/schemas/VercelBaseError" }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string" }, "message": { "type": "string" } } } ] } } }, "VercelBadRequestError": { "type": "object", "required": [ "error" ], "properties": { "error": { "allOf": [ { "$ref": "#/components/schemas/VercelBaseError" }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string" }, "message": { "type": "string" } } } ] } } }, "VercelRateLimitError": { "type": "object", "required": [ "error" ], "properties": { "error": { "allOf": [ { "$ref": "#/components/schemas/VercelBaseError" }, { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string" }, "limit": { "$ref": "#/components/schemas/RateLimitNotice" } } } ] } } }, "RateLimitNotice": { "type": "object", "required": [ "remaining", "reset", "resetMs", "total" ], "properties": { "remaining": { "type": "integer", "minimum": 0 }, "reset": { "type": "integer", "minimum": 0 }, "resetMs": { "type": "integer", "minimum": 0 }, "total": { "type": "integer", "minimum": 0 } } } }, "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": {} } } } } }, "security": [] }