{ "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": { "accessGroupId": { "type": "string", "description": "ID of the access group.", "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" }, "createdAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was created.", "example": 1588720733602 }, "entitlements": { "items": { "type": "string", "enum": [ "v0" ] }, "type": "array" }, "isDsyncManaged": { "type": "boolean", "enum": [ false, true ] }, "membersCount": { "type": "number", "description": "Number of members in the access group.", "example": 5 }, "name": { "type": "string", "description": "The name of this access group.", "example": "my-access-group" }, "projectsCount": { "type": "number", "description": "Number of projects in the access group.", "example": 2 }, "teamId": { "type": "string", "description": "ID of the team that this access group belongs to.", "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" }, "teamPermissions": { "items": { "type": "string", "enum": [ "AiGatewayBudgetManager", "AiGatewayCredits", "AiGatewaySettings", "AiGatewayTranscriptsManager", "AiGatewayTranscriptsViewer", "AiGatewayUser", "ConnectorManager", "CreateProject", "EnvVariableManager", "EnvironmentManager", "FullProductionDeployment", "IntegrationManager", "OrgAdmin", "OrgViewer", "UsageViewer", "V0Builder", "V0Chatter", "V0Viewer", "WorkflowDecryptor" ] }, "type": "array" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] }, "updatedAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was last updated.", "example": 1588720733602 } }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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": { "accessGroupId": { "type": "string", "description": "ID of the access group.", "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" }, "createdAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was created.", "example": 1588720733602 }, "entitlements": { "items": { "type": "string", "enum": [ "v0" ] }, "type": "array" }, "membersCount": { "type": "number", "description": "Number of members in the access group.", "example": 5 }, "name": { "type": "string", "description": "The name of this access group.", "example": "my-access-group" }, "projectsCount": { "type": "number", "description": "Number of projects in the access group.", "example": 2 }, "teamId": { "type": "string", "description": "ID of the team that this access group belongs to.", "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" }, "teamPermissions": { "items": { "type": "string" }, "type": "array", "description": "Permissions that the team has in the access group.", "example": [ "CreateProject" ] }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] }, "updatedAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was last updated.", "example": 1588720733602 } }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "idOrName", "in": "path", "required": true, "schema": { "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "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." }, "404": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "idOrName", "in": "path", "required": true, "schema": { "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "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" }, "createdAt": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" }, "teamRole": { "type": "string", "enum": [ "BILLING", "CONTRIBUTOR", "DEVELOPER", "MEMBER", "OWNER", "SECURITY", "VIEWER", "VIEWER_FOR_PLUS" ] }, "uid": { "type": "string" }, "username": { "type": "string" } }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "idOrName", "description": "The ID or name of the Access Group.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID or name of the Access Group.", "example": "ag_pavWOn1iLObbXLRiwVvzmPrTWyTf" } }, { "name": "limit", "description": "Limit how many access group members should be returned.", "in": "query", "required": false, "schema": { "description": "Limit how many access group members should be returned.", "example": 20, "type": "integer", "minimum": 1, "maximum": 100 } }, { "name": "next", "description": "Continuation cursor to retrieve the next page of results.", "in": "query", "required": false, "schema": { "description": "Continuation cursor to retrieve the next page of results.", "type": "string" } }, { "name": "search", "description": "Search project members by their name, username, and email.", "in": "query", "required": false, "schema": { "description": "Search project members by their name, username, and email.", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "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": { "accessGroupId": { "type": "string", "description": "ID of the access group.", "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" }, "createdAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was created.", "example": 1588720733602 }, "entitlements": { "items": { "type": "string" }, "type": "array" }, "isDsyncManaged": { "type": "boolean", "enum": [ false, true ] }, "members": { "items": { "type": "string" }, "type": "array" }, "membersCount": { "type": "number", "description": "Number of members in the access group.", "example": 5 }, "name": { "type": "string", "description": "The name of this access group.", "example": "my-access-group" }, "projects": { "items": { "type": "string" }, "type": "array" }, "projectsCount": { "type": "number", "description": "Number of projects in the access group.", "example": 2 }, "teamId": { "type": "string", "description": "ID of the team that this access group belongs to.", "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" }, "teamPermissions": { "items": { "type": "string" }, "type": "array" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] }, "updatedAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was last updated.", "example": 1588720733602 } }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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": { "accessGroupId": { "type": "string", "description": "ID of the access group.", "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" }, "createdAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was created.", "example": 1588720733602 }, "entitlements": { "items": { "type": "string", "enum": [ "v0" ] }, "type": "array" }, "membersCount": { "type": "number" }, "name": { "type": "string", "description": "The name of this access group.", "example": "my-access-group" }, "projectsCount": { "type": "number" }, "teamId": { "type": "string", "description": "ID of the team that this access group belongs to.", "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" }, "teamPermissions": { "items": { "type": "string" }, "type": "array", "description": "Permissions that the team has in the access group.", "example": [ "CreateProject" ] }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] }, "updatedAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was last updated.", "example": 1588720733602 } }, "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." }, "404": { "description": "" }, "410": { "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", "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": { "pagination": { "properties": { "count": { "type": "number" }, "next": { "nullable": true, "type": "string" } }, "required": [ "count", "next" ], "type": "object" }, "projects": { "items": { "properties": { "createdAt": { "type": "string" }, "project": { "properties": { "framework": { "nullable": true, "type": "string" }, "latestDeploymentId": { "type": "string" }, "name": { "type": "string" } }, "type": "object" }, "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ] }, "updatedAt": { "type": "string" } }, "required": [ "createdAt", "project", "projectId", "role", "updatedAt" ], "type": "object" }, "type": "array" } }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "idOrName", "description": "The ID or name of the Access Group.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID or name of the Access Group.", "example": "ag_pavWOn1iLObbXLRiwVvzmPrTWyTf" } }, { "name": "limit", "description": "Limit how many access group projects should be returned.", "in": "query", "required": false, "schema": { "description": "Limit how many access group projects should be returned.", "example": 20, "type": "integer", "minimum": 1, "maximum": 100 } }, { "name": "next", "description": "Continuation cursor to retrieve the next page of results.", "in": "query", "required": false, "schema": { "description": "Continuation cursor to retrieve the next page of results.", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "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": { "accessGroupId": { "type": "string" }, "createdAt": { "type": "string" }, "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ] }, "teamId": { "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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": { "accessGroupId": { "type": "string" }, "createdAt": { "type": "string" }, "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ] }, "teamId": { "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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": { "accessGroupId": { "type": "string" }, "createdAt": { "type": "string" }, "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ] }, "teamId": { "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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();" } ] } }, "/ai-gateway/virtual-model-configs": { "post": { "description": "Create a virtual model config (VMC)", "operationId": "createAiGatewayVirtualModelConfig", "security": [ { "bearerToken": [] } ], "summary": "Create virtual model config", "tags": [ "ai-gateway" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayVirtualModelConfig" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "410": { "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" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "createAiGatewayVirtualModelConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.createAiGatewayVirtualModelConfig({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "description": "Get a virtual model config", "operationId": "getAiGatewayVirtualModelConfig", "security": [ { "bearerToken": [] } ], "summary": "Get virtual model config", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/AiGatewayVirtualModelConfig" }, { "$ref": "#/components/schemas/AiGatewayVirtualModelConfigList" } ] } } } }, "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": "" }, "500": { "description": "" } }, "parameters": [ { "name": "ownerId", "in": "query", "schema": { "type": "string" } }, { "name": "virtualModelSlug", "in": "query", "schema": { "type": "string" } }, { "name": "limit", "in": "query", "schema": { "type": "integer", "minimum": 1 } }, { "name": "cursor", "in": "query", "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": "getAiGatewayVirtualModelConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.getAiGatewayVirtualModelConfig({\n virtualModelSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update a virtual model config", "operationId": "updateAiGatewayVirtualModelConfig", "security": [ { "bearerToken": [] } ], "summary": "Update virtual model config", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayVirtualModelConfig" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "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" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "updateAiGatewayVirtualModelConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.updateAiGatewayVirtualModelConfig({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Delete a virtual model config (soft delete)", "operationId": "deleteAiGatewayVirtualModelConfig", "security": [ { "bearerToken": [] } ], "summary": "Delete virtual model config", "tags": [ "ai-gateway" ], "responses": { "204": { "description": "", "content": { "application/json": { "schema": { "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." }, "404": { "description": "" }, "410": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "ownerId", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "virtualModelSlug", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "updatedBy", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "actingIp", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "actingUserAgent", "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": "deleteAiGatewayVirtualModelConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.deleteAiGatewayVirtualModelConfig({\n virtualModelSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/ai-gateway/virtual-model-configs/list": { "get": { "description": "List virtual model configs. With `ownerId`, returns all of that team's VMCs. Without it, pages through VMCs across all teams (newest-first, `limit`/`cursor`).", "operationId": "listAiGatewayVirtualModelConfigs", "security": [ { "bearerToken": [] } ], "summary": "List virtual model configs", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayVirtualModelConfigList" } } } }, "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": "" }, "500": { "description": "" } }, "parameters": [ { "name": "ownerId", "in": "query", "schema": { "type": "string" } }, { "name": "limit", "in": "query", "schema": { "type": "integer", "minimum": 1 } }, { "name": "cursor", "in": "query", "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": "listAiGatewayVirtualModelConfigs", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.listAiGatewayVirtualModelConfigs({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/ai-gateway/virtual-model-configs/{vmcSlug}": { "get": { "description": "Get a virtual model config by path slug", "operationId": "getAiGatewayVirtualModelConfigBySlug", "security": [ { "bearerToken": [] } ], "summary": "Get virtual model config", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayVirtualModelConfig" } } } }, "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": "" }, "500": { "description": "" } }, "parameters": [ { "name": "ownerId", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "vmcSlug", "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": "getAiGatewayVirtualModelConfigBySlug", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.getAiGatewayVirtualModelConfigBySlug({\n vmcSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update a virtual model config by path slug", "operationId": "updateAiGatewayVirtualModelConfigBySlug", "security": [ { "bearerToken": [] } ], "summary": "Update virtual model config", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayVirtualModelConfig" } } } }, "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": "" }, "429": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "vmcSlug", "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": "updateAiGatewayVirtualModelConfigBySlug", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.updateAiGatewayVirtualModelConfigBySlug({\n vmcSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Delete a virtual model config by path slug (soft delete)", "operationId": "deleteAiGatewayVirtualModelConfigBySlug", "security": [ { "bearerToken": [] } ], "summary": "Delete virtual model config", "tags": [ "ai-gateway" ], "responses": { "204": { "description": "", "content": { "application/json": { "schema": { "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." }, "404": { "description": "" }, "410": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "ownerId", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "vmcSlug", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "updatedBy", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "actingIp", "in": "query", "required": false, "schema": { "type": "string" } }, { "name": "actingUserAgent", "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": "deleteAiGatewayVirtualModelConfigBySlug", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.deleteAiGatewayVirtualModelConfigBySlug({\n vmcSlug: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/ai-gateway/rules": { "post": { "description": "Create a routing rule", "operationId": "createAiGatewayRule", "security": [ { "bearerToken": [] } ], "summary": "Create rule", "tags": [ "ai-gateway" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayRule" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "410": { "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" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "createAiGatewayRule", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.createAiGatewayRule({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "description": "List the authenticated team's routing rules", "operationId": "listAiGatewayRules", "security": [ { "bearerToken": [] } ], "summary": "List rules", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayRuleList" } } } }, "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": "" }, "500": { "description": "" } }, "parameters": [ { "name": "includeDisabled", "in": "query", "schema": { "type": "string", "enum": [ "true", "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": "listAiGatewayRules", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.listAiGatewayRules({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update a routing rule (enabled, action, or description)", "operationId": "updateAiGatewayRule", "security": [ { "bearerToken": [] } ], "summary": "Update rule", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayRule" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "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" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "updateAiGatewayRule", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.updateAiGatewayRule({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Delete a routing rule (soft delete)", "operationId": "deleteAiGatewayRule", "security": [ { "bearerToken": [] } ], "summary": "Delete rule", "tags": [ "ai-gateway" ], "responses": { "204": { "description": "", "content": { "application/json": { "schema": { "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." }, "404": { "description": "" }, "410": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "ruleId", "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": "deleteAiGatewayRule", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.deleteAiGatewayRule({\n ruleId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/ai-gateway/budgets/list": { "get": { "description": "List the team's AI Gateway budgets (team/project/user scopes, plus default-covered api-key spend) as a flat list, optionally filtered by scope.", "operationId": "listAiGatewayBudgets", "security": [ { "bearerToken": [] } ], "summary": "List AI Gateway budgets", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayBudgetList" } } } }, "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": "" }, "500": { "description": "" } }, "parameters": [ { "name": "scopeType", "description": "Restrict the list to a single budget scope.", "in": "query", "schema": { "type": "string", "enum": [ "team", "project", "user", "api-key" ], "description": "Restrict the list to a single budget scope." } }, { "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": "listAiGatewayBudgets", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.listAiGatewayBudgets({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/ai-gateway/budgets": { "put": { "description": "Create or update a team-, project-, or user-scope AI Gateway budget.", "operationId": "upsertAiGatewayBudget", "security": [ { "bearerToken": [] } ], "summary": "Upsert AI Gateway budget", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayBudget" } } } }, "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": "" }, "410": { "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", "additionalProperties": false, "required": [ "scopeType", "limitAmount" ], "properties": { "scopeType": { "type": "string", "enum": [ "team", "project", "user" ] }, "projectId": { "type": "string", "description": "Required when scopeType is \"project\"." }, "userId": { "type": "string", "description": "Required when scopeType is \"user\"." }, "limitAmount": { "type": "number", "minimum": 1, "description": "Budget limit in dollars." }, "refreshPeriod": { "type": "string", "enum": [ "daily", "weekly", "monthly", "none" ], "default": "monthly" }, "includeByokInQuota": { "type": "boolean", "description": "Whether BYOK usage counts toward this budget." }, "alertThresholds": { "type": "array", "items": { "type": "number", "enum": [ 50, 75, 100 ] } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "upsertAiGatewayBudget", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.upsertAiGatewayBudget({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Archive a team-, project-, or user-scope AI Gateway budget.", "operationId": "archiveAiGatewayBudget", "security": [ { "bearerToken": [] } ], "summary": "Archive AI Gateway budget", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayBudget" } } } }, "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": "" }, "500": { "description": "" } }, "parameters": [ { "name": "scopeType", "description": "The budget scope to archive.", "in": "query", "required": true, "schema": { "type": "string", "enum": [ "team", "project", "user" ], "description": "The budget scope to archive." } }, { "name": "projectId", "description": "Required when scopeType is \"project\".", "in": "query", "required": false, "schema": { "type": "string", "description": "Required when scopeType is \"project\"." } }, { "name": "userId", "description": "Required when scopeType is \"user\".", "in": "query", "required": false, "schema": { "type": "string", "description": "Required when scopeType is \"user\"." } }, { "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": "archiveAiGatewayBudget", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.archiveAiGatewayBudget({\n scopeType: \"project\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/ai-gateway/budgets/defaults/list": { "get": { "description": "List the team's AI Gateway budget defaults as a flat per-scope list (one row per team/project/api-key/user scope with a default set). An empty list is a normal state for the dashboard.", "operationId": "listAiGatewayBudgetDefaults", "security": [ { "bearerToken": [] } ], "summary": "List AI Gateway budget defaults", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayBudgetDefaultList" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "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" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listAiGatewayBudgetDefaults", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.listAiGatewayBudgetDefaults({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/ai-gateway/budgets/defaults": { "put": { "description": "Create or update an AI Gateway budget default for one scope. Team-level authority only (owners/admins).", "operationId": "upsertAiGatewayBudgetDefault", "security": [ { "bearerToken": [] } ], "summary": "Upsert AI Gateway budget default", "tags": [ "ai-gateway" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AiGatewayBudgetDefault" } } } }, "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": "" }, "410": { "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", "additionalProperties": false, "required": [ "scopeType", "limitAmount" ], "properties": { "scopeType": { "type": "string", "enum": [ "team", "project", "api-key", "user" ] }, "limitAmount": { "type": "number", "minimum": 1, "description": "Default budget limit in dollars." }, "refreshPeriod": { "type": "string", "enum": [ "daily", "weekly", "monthly", "none" ] }, "alertThresholds": { "type": "array", "items": { "type": "number", "enum": [ 50, 75, 100 ] } } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "upsertAiGatewayBudgetDefault", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.aiGateway.upsertAiGatewayBudgetDefault({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Delete an AI Gateway budget default for one scope. Team-level authority only (owners/admins).", "operationId": "archiveAiGatewayBudgetDefault", "security": [ { "bearerToken": [] } ], "summary": "Archive AI Gateway budget default", "tags": [ "ai-gateway" ], "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": "" }, "410": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "scopeType", "description": "The budget default scope to delete.", "in": "query", "required": true, "schema": { "type": "string", "enum": [ "team", "project", "api-key", "user" ], "description": "The budget default scope 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": "archiveAiGatewayBudgetDefault", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.aiGateway.archiveAiGatewayBudgetDefault({\n scopeType: \"api-key\",\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." }, "404": { "description": "" }, "410": { "description": "" } }, "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." }, "404": { "description": "" }, "410": { "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": "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." }, "404": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "in": "header", "description": "The artifact size in bytes", "required": true, "schema": { "description": "The artifact size in bytes", "type": "number" }, "name": "Content-Length" }, { "in": "header", "description": "The time taken to generate the uploaded artifact in milliseconds.", "required": false, "schema": { "type": "number", "description": "The time taken to generate the uploaded artifact in milliseconds.", "example": 400 }, "name": "x-artifact-duration" }, { "in": "header", "description": "The continuous integration or delivery environment where this artifact was generated.", "required": false, "schema": { "type": "string", "description": "The continuous integration or delivery environment where this artifact was generated.", "example": "VERCEL", "maxLength": 50 }, "name": "x-artifact-client-ci" }, { "in": "header", "description": "1 if the client is an interactive shell. Otherwise 0", "required": false, "schema": { "type": "integer", "description": "1 if the client is an interactive shell. Otherwise 0", "example": 0, "minimum": 0, "maximum": 1 }, "name": "x-artifact-client-interactive" }, { "in": "header", "description": "The base64 encoded tag for this artifact. The value is sent back to clients when the artifact is downloaded as the header `x-artifact-tag`", "required": false, "schema": { "type": "string", "description": "The base64 encoded tag for this artifact. The value is sent back to clients when the artifact is downloaded as the header `x-artifact-tag`", "example": "Tc0BmHvJYMIYJ62/zx87YqO0Flxk+5Ovip25NY825CQ=", "maxLength": 600 }, "name": "x-artifact-tag" }, { "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 contentLength: 3848.22,\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" }, "410": { "description": "" } }, "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" }, "410": { "description": "" } }, "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": { "dirtyHash": { "type": "string" }, "sha": { "type": "string" }, "size": { "type": "number" }, "tag": { "type": "string" }, "taskDurationMs": { "type": "number" } }, "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." }, "404": { "description": "" }, "410": { "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": [ "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}" } ] }, "delete": { "description": "Deletes all cache artifacts stored for the authenticated team or user, clearing the Remote Cache. Subsequent builds will re-populate the cache.", "operationId": "deleteAllArtifacts", "security": [ { "bearerToken": [] } ], "summary": "Delete all cache artifacts", "tags": [ "artifacts" ], "responses": { "200": { "description": "Success. All cache artifacts for the account were deleted.", "content": { "application/json": { "schema": { "properties": { "deletedCount": { "type": "number" } }, "required": [ "deletedCount" ], "type": "object" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "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": "deleteAllArtifacts", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.artifacts.deleteAllArtifacts({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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. `SkuId` is the stable product ID. For unmapped items, it is derived from the item identifier. 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" }, "ChargePeriodEnd": { "type": "string", "description": "Exclusive end of the charge period (ISO 8601 UTC) - Required in v1.3" }, "ChargePeriodStart": { "type": "string", "description": "Inclusive start of the charge period (ISO 8601 UTC)" }, "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." }, "PricingCategory": { "type": "string", "enum": [ "Committed", "Dynamic", "Other", "Standard" ], "description": "Pricing model used for the charge." }, "PricingCurrency": { "type": "string", "enum": [ "USD" ] }, "PricingQuantity": { "type": "number" }, "PricingUnit": { "type": "string" }, "RegionId": { "type": "string", "description": "Provider-assigned region identifier" }, "RegionName": { "type": "string", "description": "Display name for the region" }, "ServiceCategory": { "type": "string", "enum": [ "AI and Machine Learning", "Analytics", "Business Applications", "Compute", "Databases", "Developer Tools", "Identity", "Integration", "Internet of Things", "Management and Governance", "Media", "Migration", "Mobile", "Multicloud", "Networking", "Other", "Security", "Storage", "Web" ], "description": "High-level category of the service" }, "ServiceName": { "type": "string", "description": "Display name for the service/product" }, "ServiceProviderName": { "type": "string", "description": "Entity making the resource/service available for purchase (v1.3)" }, "SkuId": { "type": "string", "description": "Stable identifier for the charged product or item" }, "Tags": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Charge metadata including the Vercel ProjectId and ProjectName information" } }, "required": [ "BilledCost", "BillingCurrency", "ChargeCategory", "ChargePeriodEnd", "ChargePeriodStart", "ConsumedQuantity", "ConsumedUnit", "EffectiveCost", "PricingCategory", "PricingCurrency", "PricingQuantity", "PricingUnit", "ServiceName", "ServiceProviderName", "SkuId", "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": "" }, "410": { "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" } ] } }, "/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": { "BillingCurrency": { "type": "string" }, "ContractCommitmentCategory": { "type": "string", "enum": [ "Spend", "Usage" ], "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." }, "ContractCommitmentPeriodEnd": { "type": "string", "description": "Exclusive end of the commitment term period (ISO 8601 UTC)" }, "ContractCommitmentPeriodStart": { "type": "string", "description": "Inclusive start 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." }, "ContractPeriodEnd": { "type": "string", "description": "Exclusive end of the overall contract period (ISO 8601 UTC)" }, "ContractPeriodStart": { "type": "string", "description": "Inclusive start of the overall contract period (ISO 8601 UTC)" } }, "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": "" }, "410": { "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" } } ] } }, "/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": { "configuration": { "oneOf": [ { "properties": { "options": { "properties": { "amount": { "type": "string", "description": "The amount of currency to buy" }, "currency": { "type": "string", "enum": [ "ai_credits", "ai_gateway_credits", "copper_test_units", "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": { "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" }, "effectiveDate": { "oneOf": [ { "type": "object", "description": "The effective date of the plan change" }, { "type": "string", "enum": [ "end_of_subscription_term", "immediate" ] } ] }, "externalPlanId": { "type": "string", "description": "The ID of the external plan to change to" }, "orbSubscriptionId": { "type": "string", "description": "The ID of the Orb subscription to change" }, "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": { "properties": { "add": { "items": {}, "type": "array", "description": "The price intervals to add to the subscription" }, "addAdjustments": { "items": {}, "type": "array", "description": "The adjustment intervals to add to the subscription" }, "allowInvoiceCreditOrVoid": { "type": "boolean", "enum": [ false, true ], "description": "Whether to allow invoice credit or void" }, "edit": { "items": {}, "type": "array", "description": "The price intervals to edit on the subscription" }, "editAdjustments": { "items": {}, "type": "array", "description": "The adjustment intervals to edit on the subscription" }, "orbSubscriptionId": { "type": "string", "description": "The ID of the Orb subscription to modify price intervals for" } }, "required": [ "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_price_interval" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" }, { "properties": { "options": { "properties": { "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" }, "externalPlanId": { "type": "string", "description": "The external plan ID of the Orb plan to subscribe to" }, "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": { "lineItems": { "items": { "properties": { "description": { "type": "string", "description": "The description of the line item" }, "id": { "type": "string", "description": "The ID of the line item" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata for the line item" }, "name": { "type": "string", "description": "The name of the line item" }, "productAlias": { "type": "string", "description": "The alias of the product being purchased" }, "productId": { "type": "string", "description": "The ID of the product being purchased" }, "quantity": { "type": "string", "description": "The quantity of the line item" }, "refund": { "type": "string", "description": "The amount of the line item that has been refunded" }, "unitAmount": { "type": "string", "description": "The unit amount of the line item" } }, "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." }, "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" } }, "required": [ "orbCustomerId", "orbExternalCustomerId", "orbExternalPlanId", "orbPlanId", "orbSubscriptionId" ], "type": "object" }, "output": { "properties": { "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change" } }, "type": "object" }, "type": { "type": "string", "enum": [ "orb_subscription_intent" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" }, { "properties": { "options": { "properties": { "fromPlan": { "properties": { "currentCycleEndDate": { "type": "string", "description": "The end of the current plan billing cycle" }, "orbSubscriptionId": { "type": "string", "description": "The Orb subscription ID currently active for the owner on the source plan" }, "planId": { "type": "string", "description": "The ID of the plan currently assigned" }, "planItemQuantities": { "items": { "properties": { "planItemId": { "type": "string", "description": "The ID of the current plan item to set the quantity for" }, "quantity": { "type": "number", "description": "The nonnegative integer quantity for the current plan item" }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs associated with the current plan item quantity" } }, "required": [ "planItemId", "quantity" ], "type": "object", "description": "The current plan item quantities" }, "type": "array", "description": "The current plan item quantities" }, "rateVariantKey": { "type": "string", "description": "The rate variant currently assigned" } }, "required": [ "currentCycleEndDate", "orbSubscriptionId", "planId" ], "type": "object", "description": "The current plan being replaced by this purchase" }, "planId": { "type": "string", "description": "The ID of the plan to subscribe to" }, "planItemQuantities": { "items": { "properties": { "planItemId": { "type": "string", "description": "The ID of the plan item to set the quantity for" }, "quantity": { "type": "number", "description": "The nonnegative integer quantity for the plan item" }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs to associate with the plan item quantity" } }, "required": [ "planItemId", "quantity" ], "type": "object", "description": "The plan item quantities to set for the subscription" }, "type": "array", "description": "The plan item quantities to set for the subscription" }, "rateVariantKey": { "type": "string", "description": "The rate variant key to apply to the subscription" } }, "required": [ "planId" ], "type": "object", "description": "Purchase configuration specific options" }, "output": { "properties": { "planChangeId": { "type": "string", "description": "The committed Plan revision used to calculate the purchase price" } }, "type": "object" }, "type": { "type": "string", "enum": [ "subscription" ] } }, "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": [ "miu", "usd" ], "description": "The currency for the purchase intent" }, "dispute": { "properties": { "amount": { "type": "string", "description": "The disputed amount." }, "createdAt": { "type": "string", "description": "When the dispute was first recorded." }, "currency": { "type": "string", "description": "The dispute currency." }, "id": { "type": "string", "description": "The unique ID of the dispute entity." }, "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." }, "id": { "type": "string", "description": "The unique ID of a Purchase Intent. Uses the format `pur_*`" }, "lineItems": { "items": { "properties": { "description": { "type": "string", "description": "The description of the line item" }, "id": { "type": "string", "description": "The ID of the line item" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata for the line item" }, "name": { "type": "string", "description": "The name of the line item" }, "productAlias": { "type": "string", "description": "The alias of the product being purchased" }, "productId": { "type": "string", "description": "The ID of the product being purchased" }, "quantity": { "type": "string", "description": "The quantity of the line item" }, "refund": { "type": "string", "description": "The amount of the line item that has been refunded" }, "unitAmount": { "type": "string", "description": "The unit amount of the line item" } }, "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" }, "ownerId": { "type": "string", "description": "The ID of the owner of the Purchase Intent." }, "provider": { "properties": { "currencyConversionRate": { "type": "string", "description": "The currency conversion rate used by the provider" }, "resourceId": { "type": "string", "description": "Provider resource id" }, "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." }, "type": { "type": "string", "enum": [ "apple_in_app_purchase", "orb_ledger", "stripe_elements", "stripe_hosted", "stripe_invoice_deferred", "stripe_invoice_elements", "stripe_invoice_immediate", "tackle_aws_marketplace" ], "description": "The type of the purchase provider" } }, "required": [ "resourceId", "type" ], "type": "object" }, "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" }, "status": { "type": "string", "enum": [ "failed", "pending", "succeeded" ], "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." } }, "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": { "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": { "changedResources": { "items": { "properties": { "addedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "effectiveAt": { "type": "string", "description": "When this resource change should take effect for downstream consumers." }, "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." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The full set of resource IDs after the change." } }, "required": [ "productAlias", "productId", "quantity" ], "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." }, "customerTimezone": { "type": "string", "description": "The Orb customer's timezone when the intent was created. Omitted for legacy intents." }, "effectiveBehavior": { "type": "string", "enum": [ "end_of_term", "immediate" ], "description": "When the subscription change should take effect." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." }, "pricingSource": { "type": "string", "enum": [ "copper", "orb" ], "description": "The source used as the authoritative price for this intent." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "referenceBillingPeriod": { "properties": { "endDate": { "type": "string", "description": "The exclusive end of the reference billing period." }, "startDate": { "type": "string", "description": "The inclusive start of the reference billing period." } }, "required": [ "endDate", "startDate" ], "type": "object", "description": "The canonical reference-product billing period at intent creation. Omitted for historical intents." } }, "required": [ "effectiveBehavior", "orbPriceId", "pricingSource", "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": { "changedResources": { "items": { "properties": { "addedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "effectiveAt": { "type": "string", "description": "When this resource change should take effect for downstream consumers." }, "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." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The full set of resource IDs after the change." } }, "required": [ "productAlias", "productId", "quantity" ], "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." }, "customerTimezone": { "type": "string", "description": "The Orb customer's timezone when the intent was created. Omitted for legacy intents." }, "effectiveBehavior": { "type": "string", "enum": [ "end_of_term", "immediate" ], "description": "When the subscription change should take effect." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." }, "pricingSource": { "type": "string", "enum": [ "copper", "orb" ], "description": "The source used as the authoritative price for this intent." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "referenceBillingPeriod": { "properties": { "endDate": { "type": "string", "description": "The exclusive end of the reference billing period." }, "startDate": { "type": "string", "description": "The inclusive start of the reference billing period." } }, "required": [ "endDate", "startDate" ], "type": "object", "description": "The canonical reference-product billing period at intent creation. Omitted for historical intents." } }, "required": [ "effectiveBehavior", "orbPriceId", "pricingSource", "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": { "changedResources": { "items": { "properties": { "addedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "effectiveAt": { "type": "string", "description": "When this resource change should take effect for downstream consumers." }, "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." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The full set of resource IDs after the change." } }, "required": [ "productAlias", "productId", "quantity" ], "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." }, "customerTimezone": { "type": "string", "description": "The Orb customer's timezone when the intent was created. Omitted for legacy intents." }, "effectiveBehavior": { "type": "string", "enum": [ "end_of_term", "immediate" ], "description": "When the subscription change should take effect." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." }, "pricingSource": { "type": "string", "enum": [ "copper", "orb" ], "description": "The source used as the authoritative price for this intent." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "referenceBillingPeriod": { "properties": { "endDate": { "type": "string", "description": "The exclusive end of the reference billing period." }, "startDate": { "type": "string", "description": "The inclusive start of the reference billing period." } }, "required": [ "endDate", "startDate" ], "type": "object", "description": "The canonical reference-product billing period at intent creation. Omitted for historical intents." } }, "required": [ "effectiveBehavior", "orbPriceId", "pricingSource", "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": { "changedResources": { "items": { "properties": { "addedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "Resource IDs that were added." }, "effectiveAt": { "type": "string", "description": "When this resource change should take effect for downstream consumers." }, "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." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The full set of resource IDs after the change." } }, "required": [ "productAlias", "productId", "quantity" ], "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." }, "customerTimezone": { "type": "string", "description": "The Orb customer's timezone when the intent was created. Omitted for legacy intents." }, "effectiveBehavior": { "type": "string", "enum": [ "end_of_term", "immediate" ], "description": "When the subscription change should take effect." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." }, "pricingSource": { "type": "string", "enum": [ "copper", "orb" ], "description": "The source used as the authoritative price for this intent." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "referenceBillingPeriod": { "properties": { "endDate": { "type": "string", "description": "The exclusive end of the reference billing period." }, "startDate": { "type": "string", "description": "The inclusive start of the reference billing period." } }, "required": [ "endDate", "startDate" ], "type": "object", "description": "The canonical reference-product billing period at intent creation. Omitted for historical intents." } }, "required": [ "effectiveBehavior", "orbPriceId", "pricingSource", "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." }, "id": { "type": "string", "description": "The ID of the Orb subscription intent with the format `orbsubint_`." }, "orbSubscriptionId": { "type": "string", "description": "The Orb subscription ID this intent is associated with." }, "orbUpdate": { "oneOf": [ { "properties": { "mode": { "type": "string", "enum": [ "sync" ] } }, "required": [ "mode" ], "type": "object", "description": "How the subscription change is applied to Orb." }, { "properties": { "mode": { "type": "string", "enum": [ "async" ] }, "status": { "type": "string", "enum": [ "canceled", "failed", "pending", "running" ] } }, "required": [ "mode", "status" ], "type": "object", "description": "How the subscription change is applied to Orb." }, { "properties": { "appliedAt": { "type": "string", "description": "The ISO 8601 date-time that the subscription change was applied to Orb." }, "mode": { "type": "string", "enum": [ "async" ] }, "status": { "type": "string", "enum": [ "succeeded" ] } }, "required": [ "appliedAt", "mode", "status" ], "type": "object", "description": "How the subscription change is applied to Orb." } ] }, "ownerId": { "type": "string", "description": "The owner ID for this intent (e.g., team or user ID)." }, "purchaseIntentId": { "type": "string", "description": "Optional purchase intent ID if this is associated with a purchase." }, "status": { "type": "string", "enum": [ "failed", "pending", "succeeded" ], "description": "The status of the Orb subscription intent." }, "updatedAt": { "type": "string", "description": "The ISO 8601 date-time that the intent was last updated." } }, "required": [ "configuration", "createdAt", "id", "orbSubscriptionId", "orbUpdate", "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": "" }, "409": { "description": "" }, "410": { "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": { "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." }, "createdBy": { "type": "string" }, "id": { "type": "string", "description": "The unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "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" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "redirectCount": { "type": "number", "description": "The number of 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." }, "404": { "description": "" }, "410": { "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": [ "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": { "pagination": { "properties": { "numPages": { "type": "number" }, "page": { "type": "number" }, "per_page": { "type": "number" } }, "required": [ "numPages", "page", "per_page" ], "type": "object" }, "redirects": { "items": { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "destination": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "preserveQueryParams": { "type": "boolean", "enum": [ false, true ] }, "query": { "type": "boolean", "enum": [ false, true ] }, "sensitive": { "type": "boolean", "enum": [ false, true ] }, "source": { "type": "string" }, "statusCode": { "type": "number" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "version": { "properties": { "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." }, "createdBy": { "type": "string" }, "id": { "type": "string", "description": "The unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "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" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "pagination", "redirects" ], "type": "object" }, { "properties": { "pagination": { "properties": { "numPages": { "type": "number" }, "page": { "type": "number" }, "per_page": { "type": "number" } }, "required": [ "numPages", "page", "per_page" ], "type": "object" }, "redirects": { "items": { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "destination": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "preserveQueryParams": { "type": "boolean", "enum": [ false, true ] }, "query": { "type": "boolean", "enum": [ false, true ] }, "sensitive": { "type": "boolean", "enum": [ false, true ] }, "source": { "type": "string" }, "statusCode": { "type": "number" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "version": { "properties": { "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." }, "createdBy": { "type": "string" }, "id": { "type": "string", "description": "The unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "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" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "pagination", "redirects", "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": "" }, "410": { "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": { "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." }, "createdBy": { "type": "string" }, "id": { "type": "string", "description": "The unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "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" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "version" ], "type": "object" }, { "properties": { "alias": { "nullable": true }, "version": { "properties": { "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." }, "createdBy": { "type": "string" }, "id": { "type": "string", "description": "The unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "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" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "alias", "version" ], "type": "object" }, { "properties": { "alias": { "nullable": true, "type": "string" }, "version": { "properties": { "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." }, "createdBy": { "type": "string" }, "id": { "type": "string", "description": "The unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "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" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "redirectCount": { "type": "number", "description": "The number of 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": "" }, "410": { "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": { "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." }, "createdBy": { "type": "string" }, "id": { "type": "string", "description": "The unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "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" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "redirectCount": { "type": "number", "description": "The number of 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": "" }, "410": { "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": { "failedToRestore": { "items": { "type": "string" }, "type": "array" }, "restored": { "items": { "type": "string" }, "type": "array" }, "version": { "properties": { "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." }, "createdBy": { "type": "string" }, "id": { "type": "string", "description": "The unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "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" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "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": "" }, "410": { "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": { "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." }, "createdBy": { "type": "string" }, "id": { "type": "string", "description": "The unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "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" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "redirectCount": { "type": "number", "description": "The number of 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." }, "404": { "description": "" }, "410": { "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" } } ], "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": { "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." }, "createdBy": { "type": "string" }, "id": { "type": "string", "description": "The unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "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" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "redirectCount": { "type": "number", "description": "The number of 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": "" }, "410": { "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": { "availableNativeChecks": { "items": { "type": "string" }, "type": "array" }, "checks": { "items": { "properties": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "createdAt": { "type": "number" }, "deletedAt": { "type": "number" }, "id": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalCheckName": { "type": "string" }, "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "sourceKind": { "type": "string", "enum": [ "git-provider", "integration", "vercel", "webhook", "integration", "webhook", "git-provider" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "blocks", "createdAt", "id", "isRerequestable", "name", "ownerId", "projectId", "requires", "source", "sourceKind", "targets", "timeout", "updatedAt" ], "type": "object" }, "type": "array" } }, "required": [ "availableNativeChecks", "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": "" }, "410": { "description": "" }, "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": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "createdAt": { "type": "number" }, "deletedAt": { "type": "number" }, "id": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalCheckName": { "type": "string" }, "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "sourceKind": { "type": "string", "enum": [ "git-provider", "integration", "vercel", "webhook", "integration", "webhook", "git-provider" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "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": "" }, "410": { "description": "" }, "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": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "createdAt": { "type": "number" }, "deletedAt": { "type": "number" }, "id": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalCheckName": { "type": "string" }, "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "sourceKind": { "type": "string", "enum": [ "git-provider", "integration", "vercel", "webhook", "integration", "webhook", "git-provider" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "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." }, "404": { "description": "" }, "410": { "description": "" }, "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": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "createdAt": { "type": "number" }, "deletedAt": { "type": "number" }, "id": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalCheckName": { "type": "string" }, "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "sourceKind": { "type": "string", "enum": [ "git-provider", "integration", "vercel", "webhook", "integration", "webhook", "git-provider" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "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": "" }, "410": { "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", "none" ], "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": "" }, "410": { "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": { "oneOf": [ { "properties": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "expectationRef": { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "jobRunAttempt": { "type": "number" } }, "required": [ "invocationAttempt", "invocationId", "jobDefinitionId", "jobRunAttempt" ], "type": "object" }, "expectationRevision": { "type": "number", "description": "Latest aggregate revision applied to this check run." }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "type": "number" }, "checkId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalCheckName": { "type": "string" }, "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" }, { "properties": { "origin": { "type": "string", "enum": [ "api", "platform" ] }, "subKind": { "type": "string", "enum": [ "vercel-native-check" ] } }, "type": "object", "description": "Native Vercel checks — check definition and check run `source`." }, { "properties": { "origin": { "type": "string", "enum": [ "api" ] }, "selection": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "invocation" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "job": { "type": "string" }, "kind": { "type": "string", "enum": [ "job" ] } }, "required": [ "job", "kind" ], "type": "object" }, { "properties": { "failIfNoMatch": { "type": "boolean", "enum": [ false, true ] }, "filters": { "items": { "type": "string" }, "type": "array" }, "job": { "type": "string", "enum": [ "Turborepo" ] }, "kind": { "type": "string", "enum": [ "turborepo" ] }, "task": { "type": "string" } }, "required": [ "filters", "job", "kind", "task" ], "type": "object" } ] }, "subKind": { "type": "string", "enum": [ "vercel-ci-check" ] } }, "required": [ "origin", "selection", "subKind" ], "type": "object", "description": "Project-defined CI requirement; its selection is frozen on each check run." } ] } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Check run backed by a project-level `check` definition." }, { "properties": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "expectationRef": { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "jobRunAttempt": { "type": "number" } }, "required": [ "invocationAttempt", "invocationId", "jobDefinitionId", "jobRunAttempt" ], "type": "object" }, "expectationRevision": { "type": "number", "description": "Latest aggregate revision applied to this check run." }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "type": "number" }, "source": { "oneOf": [ { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "origin": { "type": "string", "enum": [ "config" ] }, "subKind": { "type": "string", "enum": [ "vercel-ci" ] } }, "required": [ "invocationId", "jobDefinitionId", "origin", "subKind" ], "type": "object", "description": "Config-driven CI task — check run `source` only (no parent check)." }, { "properties": { "origin": { "type": "string", "enum": [ "platform" ] }, "subKind": { "type": "string", "enum": [ "vercel-ci-sentinel" ] } }, "required": [ "origin", "subKind" ], "type": "object", "description": "CI sentinel — check run `source` only (no parent check)." } ] } }, "required": [ "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Vercel CI check run without a parent `check` (no `checkId` field)." } ] }, "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." }, "404": { "description": "" }, "410": { "description": "" }, "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": { "oneOf": [ { "properties": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "expectationRef": { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "jobRunAttempt": { "type": "number" } }, "required": [ "invocationAttempt", "invocationId", "jobDefinitionId", "jobRunAttempt" ], "type": "object" }, "expectationRevision": { "type": "number", "description": "Latest aggregate revision applied to this check run." }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "type": "number" }, "checkId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalCheckName": { "type": "string" }, "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" }, { "properties": { "origin": { "type": "string", "enum": [ "api", "platform" ] }, "subKind": { "type": "string", "enum": [ "vercel-native-check" ] } }, "type": "object", "description": "Native Vercel checks — check definition and check run `source`." }, { "properties": { "origin": { "type": "string", "enum": [ "api" ] }, "selection": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "invocation" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "job": { "type": "string" }, "kind": { "type": "string", "enum": [ "job" ] } }, "required": [ "job", "kind" ], "type": "object" }, { "properties": { "failIfNoMatch": { "type": "boolean", "enum": [ false, true ] }, "filters": { "items": { "type": "string" }, "type": "array" }, "job": { "type": "string", "enum": [ "Turborepo" ] }, "kind": { "type": "string", "enum": [ "turborepo" ] }, "task": { "type": "string" } }, "required": [ "filters", "job", "kind", "task" ], "type": "object" } ] }, "subKind": { "type": "string", "enum": [ "vercel-ci-check" ] } }, "required": [ "origin", "selection", "subKind" ], "type": "object", "description": "Project-defined CI requirement; its selection is frozen on each check run." } ] } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Check run backed by a project-level `check` definition." }, { "properties": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "expectationRef": { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "jobRunAttempt": { "type": "number" } }, "required": [ "invocationAttempt", "invocationId", "jobDefinitionId", "jobRunAttempt" ], "type": "object" }, "expectationRevision": { "type": "number", "description": "Latest aggregate revision applied to this check run." }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "type": "number" }, "source": { "oneOf": [ { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "origin": { "type": "string", "enum": [ "config" ] }, "subKind": { "type": "string", "enum": [ "vercel-ci" ] } }, "required": [ "invocationId", "jobDefinitionId", "origin", "subKind" ], "type": "object", "description": "Config-driven CI task — check run `source` only (no parent check)." }, { "properties": { "origin": { "type": "string", "enum": [ "platform" ] }, "subKind": { "type": "string", "enum": [ "vercel-ci-sentinel" ] } }, "required": [ "origin", "subKind" ], "type": "object", "description": "CI sentinel — check run `source` only (no parent check)." } ] } }, "required": [ "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Vercel CI check run without a parent `check` (no `checkId` field)." } ] }, "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." }, "404": { "description": "" }, "410": { "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" } } ], "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": { "oneOf": [ { "properties": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "expectationRef": { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "jobRunAttempt": { "type": "number" } }, "required": [ "invocationAttempt", "invocationId", "jobDefinitionId", "jobRunAttempt" ], "type": "object" }, "expectationRevision": { "type": "number", "description": "Latest aggregate revision applied to this check run." }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "type": "number" }, "checkId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalCheckName": { "type": "string" }, "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" }, { "properties": { "origin": { "type": "string", "enum": [ "api", "platform" ] }, "subKind": { "type": "string", "enum": [ "vercel-native-check" ] } }, "type": "object", "description": "Native Vercel checks — check definition and check run `source`." }, { "properties": { "origin": { "type": "string", "enum": [ "api" ] }, "selection": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "invocation" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "job": { "type": "string" }, "kind": { "type": "string", "enum": [ "job" ] } }, "required": [ "job", "kind" ], "type": "object" }, { "properties": { "failIfNoMatch": { "type": "boolean", "enum": [ false, true ] }, "filters": { "items": { "type": "string" }, "type": "array" }, "job": { "type": "string", "enum": [ "Turborepo" ] }, "kind": { "type": "string", "enum": [ "turborepo" ] }, "task": { "type": "string" } }, "required": [ "filters", "job", "kind", "task" ], "type": "object" } ] }, "subKind": { "type": "string", "enum": [ "vercel-ci-check" ] } }, "required": [ "origin", "selection", "subKind" ], "type": "object", "description": "Project-defined CI requirement; its selection is frozen on each check run." } ] } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Check run backed by a project-level `check` definition." }, { "properties": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "expectationRef": { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "jobRunAttempt": { "type": "number" } }, "required": [ "invocationAttempt", "invocationId", "jobDefinitionId", "jobRunAttempt" ], "type": "object" }, "expectationRevision": { "type": "number", "description": "Latest aggregate revision applied to this check run." }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "type": "number" }, "source": { "oneOf": [ { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "origin": { "type": "string", "enum": [ "config" ] }, "subKind": { "type": "string", "enum": [ "vercel-ci" ] } }, "required": [ "invocationId", "jobDefinitionId", "origin", "subKind" ], "type": "object", "description": "Config-driven CI task — check run `source` only (no parent check)." }, { "properties": { "origin": { "type": "string", "enum": [ "platform" ] }, "subKind": { "type": "string", "enum": [ "vercel-ci-sentinel" ] } }, "required": [ "origin", "subKind" ], "type": "object", "description": "CI sentinel — check run `source` only (no parent check)." } ] } }, "required": [ "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Vercel CI check run without a parent `check` (no `checkId` field)." } ] } } } }, "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": "" }, "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": { "oneOf": [ { "properties": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "expectationRef": { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "jobRunAttempt": { "type": "number" } }, "required": [ "invocationAttempt", "invocationId", "jobDefinitionId", "jobRunAttempt" ], "type": "object" }, "expectationRevision": { "type": "number", "description": "Latest aggregate revision applied to this check run." }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "type": "number" }, "checkId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalCheckName": { "type": "string" }, "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" }, { "properties": { "origin": { "type": "string", "enum": [ "api", "platform" ] }, "subKind": { "type": "string", "enum": [ "vercel-native-check" ] } }, "type": "object", "description": "Native Vercel checks — check definition and check run `source`." }, { "properties": { "origin": { "type": "string", "enum": [ "api" ] }, "selection": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "invocation" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "job": { "type": "string" }, "kind": { "type": "string", "enum": [ "job" ] } }, "required": [ "job", "kind" ], "type": "object" }, { "properties": { "failIfNoMatch": { "type": "boolean", "enum": [ false, true ] }, "filters": { "items": { "type": "string" }, "type": "array" }, "job": { "type": "string", "enum": [ "Turborepo" ] }, "kind": { "type": "string", "enum": [ "turborepo" ] }, "task": { "type": "string" } }, "required": [ "filters", "job", "kind", "task" ], "type": "object" } ] }, "subKind": { "type": "string", "enum": [ "vercel-ci-check" ] } }, "required": [ "origin", "selection", "subKind" ], "type": "object", "description": "Project-defined CI requirement; its selection is frozen on each check run." } ] } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Check run backed by a project-level `check` definition." }, { "properties": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "expectationRef": { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "jobRunAttempt": { "type": "number" } }, "required": [ "invocationAttempt", "invocationId", "jobDefinitionId", "jobRunAttempt" ], "type": "object" }, "expectationRevision": { "type": "number", "description": "Latest aggregate revision applied to this check run." }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "type": "number" }, "source": { "oneOf": [ { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "origin": { "type": "string", "enum": [ "config" ] }, "subKind": { "type": "string", "enum": [ "vercel-ci" ] } }, "required": [ "invocationId", "jobDefinitionId", "origin", "subKind" ], "type": "object", "description": "Config-driven CI task — check run `source` only (no parent check)." }, { "properties": { "origin": { "type": "string", "enum": [ "platform" ] }, "subKind": { "type": "string", "enum": [ "vercel-ci-sentinel" ] } }, "required": [ "origin", "subKind" ], "type": "object", "description": "CI sentinel — check run `source` only (no parent check)." } ] } }, "required": [ "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Vercel CI check run without a parent `check` (no `checkId` field)." } ] } } } }, "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": "" }, "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": { "oneOf": [ { "properties": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "expectationRef": { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "jobRunAttempt": { "type": "number" } }, "required": [ "invocationAttempt", "invocationId", "jobDefinitionId", "jobRunAttempt" ], "type": "object" }, "expectationRevision": { "type": "number", "description": "Latest aggregate revision applied to this check run." }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "type": "number" }, "checkId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalCheckName": { "type": "string" }, "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" }, { "properties": { "origin": { "type": "string", "enum": [ "api", "platform" ] }, "subKind": { "type": "string", "enum": [ "vercel-native-check" ] } }, "type": "object", "description": "Native Vercel checks — check definition and check run `source`." }, { "properties": { "origin": { "type": "string", "enum": [ "api" ] }, "selection": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "invocation" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "job": { "type": "string" }, "kind": { "type": "string", "enum": [ "job" ] } }, "required": [ "job", "kind" ], "type": "object" }, { "properties": { "failIfNoMatch": { "type": "boolean", "enum": [ false, true ] }, "filters": { "items": { "type": "string" }, "type": "array" }, "job": { "type": "string", "enum": [ "Turborepo" ] }, "kind": { "type": "string", "enum": [ "turborepo" ] }, "task": { "type": "string" } }, "required": [ "filters", "job", "kind", "task" ], "type": "object" } ] }, "subKind": { "type": "string", "enum": [ "vercel-ci-check" ] } }, "required": [ "origin", "selection", "subKind" ], "type": "object", "description": "Project-defined CI requirement; its selection is frozen on each check run." } ] } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Check run backed by a project-level `check` definition." }, { "properties": { "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "expectationRef": { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "jobRunAttempt": { "type": "number" } }, "required": [ "invocationAttempt", "invocationId", "jobDefinitionId", "jobRunAttempt" ], "type": "object" }, "expectationRevision": { "type": "number", "description": "Latest aggregate revision applied to this check run." }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "timeout": { "type": "number" }, "updatedAt": { "type": "number" }, "source": { "oneOf": [ { "properties": { "invocationAttempt": { "type": "number" }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" }, "origin": { "type": "string", "enum": [ "config" ] }, "subKind": { "type": "string", "enum": [ "vercel-ci" ] } }, "required": [ "invocationId", "jobDefinitionId", "origin", "subKind" ], "type": "object", "description": "Config-driven CI task — check run `source` only (no parent check)." }, { "properties": { "origin": { "type": "string", "enum": [ "platform" ] }, "subKind": { "type": "string", "enum": [ "vercel-ci-sentinel" ] } }, "required": [ "origin", "subKind" ], "type": "object", "description": "CI sentinel — check run `source` only (no parent check)." } ] } }, "required": [ "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Vercel CI check run without a parent `check` (no `checkId` field)." } ] } } } }, "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": "" }, "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": { "additionalProperties": false, "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": { "blocking": { "type": "boolean", "enum": [ false, true ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "stale", "succeeded" ], "example": "succeeded" }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "detailsUrl": { "type": "string" }, "externalId": { "type": "string" }, "id": { "type": "string", "example": "chk_1a2b3c4d5e6f7g8h9i0j" }, "integrationId": { "type": "string" }, "name": { "type": "string", "example": "Performance Check" }, "output": { "properties": { "metrics": { "properties": { "CLS": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "FCP": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "path": { "type": "string", "example": "/api/users" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] }, "startedAt": { "type": "number" }, "status": { "type": "string", "enum": [ "completed", "registered", "running" ], "example": "completed" }, "updatedAt": { "type": "number" } }, "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" }, "410": { "description": "" } }, "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": { "blocking": { "type": "boolean", "enum": [ false, true ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "stale", "succeeded" ] }, "createdAt": { "type": "number" }, "detailsUrl": { "type": "string" }, "id": { "type": "string" }, "integrationId": { "type": "string" }, "name": { "type": "string" }, "output": { "properties": { "metrics": { "properties": { "CLS": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "FCP": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "path": { "type": "string" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] }, "startedAt": { "type": "number" }, "status": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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" }, "410": { "description": "" } }, "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": { "blocking": { "type": "boolean", "enum": [ false, true ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "stale", "succeeded" ] }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "detailsUrl": { "type": "string" }, "externalId": { "type": "string" }, "id": { "type": "string" }, "integrationId": { "type": "string" }, "name": { "type": "string" }, "output": { "properties": { "metrics": { "properties": { "CLS": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "FCP": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "path": { "type": "string" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] }, "startedAt": { "type": "number" }, "status": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "updatedAt": { "type": "number" } }, "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" }, "410": { "description": "" } }, "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": { "blocking": { "type": "boolean", "enum": [ false, true ] }, "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "stale", "succeeded" ] }, "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "detailsUrl": { "type": "string" }, "externalId": { "type": "string" }, "id": { "type": "string" }, "integrationId": { "type": "string" }, "name": { "type": "string" }, "output": { "properties": { "metrics": { "properties": { "CLS": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "FCP": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] }, "value": { "nullable": true, "type": "number" } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "path": { "type": "string" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] }, "startedAt": { "type": "number" }, "status": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "updatedAt": { "type": "number" } }, "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" }, "410": { "description": "" }, "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" }, "410": { "description": "" } }, "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": [ "networking" ], "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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.networking.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": [ "networking" ], "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." }, "404": { "description": "" }, "409": { "description": "" }, "410": { "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.networking.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": [ "networking" ], "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." }, "404": { "description": "" }, "409": { "description": "" }, "410": { "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.networking.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": [ "networking" ], "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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.networking.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": [ "networking" ], "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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.networking.readNetwork({\n networkId: \"uzrmorq7bn05z-fz\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/networking/privatelink/endpoints": { "post": { "description": "Creates a PrivateLink endpoint for a project.", "operationId": "createPrivateLinkEndpoint", "security": [ { "bearerToken": [] } ], "summary": "Create a PrivateLink endpoint", "tags": [ "networking" ], "responses": { "201": { "description": "The PrivateLink endpoint was created and is being provisioned.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PrivateLinkEndpoint" } } } }, "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": "" }, "409": { "description": "" }, "410": { "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": { "projectId": { "type": "string", "description": "The project ID to create the PrivateLink endpoint for.", "example": "prj_a1b2c3d4e5f6g7h8" }, "name": { "type": "string", "description": "The name of the PrivateLink endpoint, used as its label in the Vercel dashboard.", "example": "payments-db", "maxLength": 255 }, "vercelRegion": { "type": "string", "description": "The Vercel region to provision the endpoint in. Advanced Networking must be enabled for the project in that region. The endpoint service itself may live in another AWS region.", "example": "iad1" }, "awsServiceName": { "type": "string", "description": "The name of the AWS VPC endpoint service to connect to. Its AWS region is read from the name; when that region differs from the one behind `vercelRegion`, the service must allow cross-region access.", "example": "com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdef0" }, "enablePrivateDns": { "type": "boolean", "description": "Whether to resolve the endpoint service through its private DNS names, which are then returned in `privateDnsNames`. Defaults to `false`, in which case the endpoint is reachable through the DNS names in `awsDnsEntries`.", "example": false } }, "required": [ "projectId", "name", "vercelRegion", "awsServiceName" ] } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createPrivateLinkEndpoint", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.networking.createPrivateLinkEndpoint({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n projectId: \"prj_a1b2c3d4e5f6g7h8\",\n name: \"payments-db\",\n vercelRegion: \"iad1\",\n awsServiceName: \"com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdef0\",\n enablePrivateDns: false,\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "description": "Lists all PrivateLink endpoints for a project.", "operationId": "listPrivateLinkEndpoints", "security": [ { "bearerToken": [] } ], "summary": "List PrivateLink endpoints", "tags": [ "networking" ], "responses": { "200": { "description": "The PrivateLink endpoints of the project.", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/PrivateLinkEndpoint" }, "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "projectId", "description": "The project ID to list PrivateLink endpoints for.", "in": "query", "required": true, "schema": { "type": "string", "description": "The project ID to list PrivateLink endpoints for.", "example": "prj_a1b2c3d4e5f6g7h8" } }, { "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": "listPrivateLinkEndpoints", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.networking.listPrivateLinkEndpoints({\n projectId: \"prj_a1b2c3d4e5f6g7h8\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/networking/privatelink/endpoints/{endpointId}": { "get": { "description": "Reads a single PrivateLink endpoint.", "operationId": "readPrivateLinkEndpoint", "security": [ { "bearerToken": [] } ], "summary": "Read a PrivateLink endpoint", "tags": [ "networking" ], "responses": { "200": { "description": "The requested PrivateLink endpoint.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PrivateLinkEndpoint" } } } }, "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": "" } }, "parameters": [ { "name": "projectId", "description": "The project ID the PrivateLink endpoint belongs to.", "in": "query", "required": true, "schema": { "type": "string", "description": "The project ID the PrivateLink endpoint belongs to.", "example": "prj_a1b2c3d4e5f6g7h8" } }, { "name": "endpointId", "description": "The unique identifier of the PrivateLink endpoint.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the PrivateLink endpoint.", "example": "ple_a1b2c3d4e5f6g7h8" } }, { "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": "readPrivateLinkEndpoint", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.networking.readPrivateLinkEndpoint({\n projectId: \"prj_a1b2c3d4e5f6g7h8\",\n endpointId: \"ple_a1b2c3d4e5f6g7h8\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Deletes a PrivateLink endpoint.", "operationId": "deletePrivateLinkEndpoint", "security": [ { "bearerToken": [] } ], "summary": "Delete a PrivateLink endpoint", "tags": [ "networking" ], "responses": { "204": { "description": "The PrivateLink endpoint was deleted.", "content": { "application/json": { "schema": { "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." }, "404": { "description": "" }, "409": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "projectId", "description": "The project ID the PrivateLink endpoint belongs to.", "in": "query", "required": true, "schema": { "type": "string", "description": "The project ID the PrivateLink endpoint belongs to.", "example": "prj_a1b2c3d4e5f6g7h8" } }, { "name": "endpointId", "description": "The unique identifier of the PrivateLink endpoint.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the PrivateLink endpoint.", "example": "ple_a1b2c3d4e5f6g7h8" } }, { "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": "deletePrivateLinkEndpoint", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.networking.deletePrivateLinkEndpoint({\n projectId: \"prj_a1b2c3d4e5f6g7h8\",\n endpointId: \"ple_a1b2c3d4e5f6g7h8\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Updates a PrivateLink endpoint (name, privateDns).", "operationId": "updatePrivateLinkEndpoint", "security": [ { "bearerToken": [] } ], "summary": "Update a PrivateLink endpoint", "tags": [ "networking" ], "responses": { "200": { "description": "The updated PrivateLink endpoint.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PrivateLinkEndpoint" } } } }, "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "projectId", "description": "The project ID the PrivateLink endpoint belongs to.", "in": "query", "required": true, "schema": { "type": "string", "description": "The project ID the PrivateLink endpoint belongs to.", "example": "prj_a1b2c3d4e5f6g7h8" } }, { "name": "endpointId", "description": "The unique identifier of the PrivateLink endpoint.", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique identifier of the PrivateLink endpoint.", "example": "ple_a1b2c3d4e5f6g7h8" } }, { "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": "A new name for the PrivateLink endpoint. When omitted, the current name is kept.", "example": "payments-db", "maxLength": 255 }, "enablePrivateDns": { "type": "boolean", "description": "When `true`, resolves the endpoint service through its private DNS names, which are then returned in `privateDnsNames`. When `false`, clears them. When omitted, the current setting is kept. At least one of `name` or `enablePrivateDns` must be provided.", "example": false } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updatePrivateLinkEndpoint", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.networking.updatePrivateLinkEndpoint({\n projectId: \"prj_a1b2c3d4e5f6g7h8\",\n endpointId: \"ple_a1b2c3d4e5f6g7h8\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n name: \"payments-db\",\n enablePrivateDns: false,\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/connect/connectors": { "get": { "description": "List connectors that belong to a team.", "operationId": "listConnectors", "security": [ { "bearerToken": [] } ], "summary": "List connectors", "tags": [ "connect" ], "responses": { "200": { "description": "A page of connectors.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectConnectorList" } } } }, "400": { "description": "One of the provided values in the request query is invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "404": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "409": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "410": { "description": "The requested resource is no longer available.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "422": { "description": "The request cannot be completed in the current state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "501": { "description": "" }, "504": { "description": "" } }, "parameters": [ { "name": "limit", "description": "Maximum number of connectors to return. Defaults to 20.", "in": "query", "schema": { "type": "integer", "minimum": 1, "maximum": 100, "description": "Maximum number of connectors to return. Defaults to 20." } }, { "name": "cursor", "description": "Cursor from `pagination.next` on the previous response.", "in": "query", "schema": { "type": "string", "description": "Cursor from `pagination.next` on the previous response." } }, { "name": "projectId", "description": "Return only connectors connected to this project.", "in": "query", "schema": { "type": "string", "description": "Return only connectors connected to this project." } }, { "name": "search", "description": "Search connector names, UIDs, and services.", "in": "query", "schema": { "type": "string", "maxLength": 100, "description": "Search connector names, UIDs, and services." } }, { "name": "type", "description": "Comma-separated connector types: `slack`, `discord`, `github`, `linear`, `linq`, `salesforce`, `sendblue`, `snowflake`, `snowflake-wif`, `microsoft-entra`, `api-key`, `photon`, `oauth`, or `custom`.", "in": "query", "schema": { "type": "string", "description": "Comma-separated connector types: `slack`, `discord`, `github`, `linear`, `linq`, `salesforce`, `sendblue`, `snowflake`, `snowflake-wif`, `microsoft-entra`, `api-key`, `photon`, `oauth`, or `custom`." } }, { "name": "service", "description": "Comma-separated provider or service identifiers.", "in": "query", "schema": { "type": "string", "description": "Comma-separated provider or service identifiers." } }, { "name": "sort", "description": "Sort by name in ascending order, or by creation or update time in descending order.", "in": "query", "schema": { "type": "string", "enum": [ "name", "createdAt", "updatedAt" ], "description": "Sort by name in ascending order, or by creation or update time in descending order." } }, { "description": "The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listConnectors", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.listConnectors({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/connect/connectors/{connector}": { "get": { "description": "Get the connector by ID. Accepts a dashboard/team requester or a deployment's project OIDC token; project requesters may only read connectors linked to their project and environment.", "operationId": "getConnector", "security": [ { "bearerToken": [] } ], "summary": "Get a connector", "tags": [ "connect" ], "responses": { "200": { "description": "The connector.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectConnector" } } } }, "400": { "description": "One of the provided values in the request query is invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "409": { "description": "The request conflicts with the current resource state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "410": { "description": "The requested resource is no longer available.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "422": { "description": "The request cannot be completed in the current state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "501": { "description": "" }, "504": { "description": "" } }, "parameters": [ { "name": "connector", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`.", "in": "path", "required": true, "schema": { "type": "string", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`." } }, { "description": "The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getConnector", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.getConnector({\n connector: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Delete a connector, its project connections, and its installation records.", "operationId": "deleteConnector", "security": [ { "bearerToken": [] } ], "summary": "Delete a connector", "tags": [ "connect" ], "responses": { "204": { "description": "The connector, its project connections, and its installation records were deleted." }, "400": { "description": "One of the provided values in the request query is invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "409": { "description": "The request conflicts with the current resource state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "410": { "description": "The requested resource is no longer available.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "422": { "description": "The request cannot be completed in the current state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "501": { "description": "" }, "502": { "description": "A dependency returned an invalid or unsuccessful response.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "504": { "description": "" } }, "parameters": [ { "name": "connector", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`.", "in": "path", "required": true, "schema": { "type": "string", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`." } }, { "description": "The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteConnector", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.connect.deleteConnector({\n connector: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/connect/connectors": { "post": { "description": "Create a connector and optionally link it to a project. Use `type` with complete provider data, or use `service` with `connectionMethod` so Connect can supply the type, endpoints, templates, and defaults.", "operationId": "createConnector", "security": [ { "bearerToken": [] } ], "summary": "Create a connector", "tags": [ "connect" ], "responses": { "201": { "description": "The connector was created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectConnectorCreateResult" } } } }, "400": { "description": "One of the provided values in the request body is invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "409": { "description": "The request conflicts with the current resource state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "410": { "description": "The requested resource is no longer available.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "422": { "description": "The request cannot be completed in the current state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "500": { "description": "An internal error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "501": { "description": "" }, "502": { "description": "A dependency returned an invalid or unsuccessful response.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "504": { "description": "" } }, "parameters": [ { "description": "The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectCreateConnectorRequest" } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createConnector", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.createConnector({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/connect/connectors/{connector}": { "patch": { "description": "Update a connector and return the connector with any service-side update signals that the caller must handle.", "operationId": "updateConnector", "security": [ { "bearerToken": [] } ], "summary": "Update a connector", "tags": [ "connect" ], "responses": { "200": { "description": "The updated connector and any required service-side follow-up signals.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectConnectorUpdateResult" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "409": { "description": "The request conflicts with the current resource state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "410": { "description": "The requested resource is no longer available.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "422": { "description": "The request cannot be completed in the current state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "501": { "description": "" }, "502": { "description": "A dependency returned an invalid or unsuccessful response.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "504": { "description": "" } }, "parameters": [ { "name": "connector", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`.", "in": "path", "required": true, "schema": { "type": "string", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`." } }, { "description": "The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectUpdateConnectorRequest" } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "updateConnector", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.updateConnector({\n connector: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n connectUpdateConnectorRequest: {},\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/connect/connectors/{connector}/trigger-destinations": { "patch": { "description": "Replace the full set of destinations that receive trigger requests for a connector.", "operationId": "replaceConnectorTriggerDestinations", "security": [ { "bearerToken": [] } ], "summary": "Update connector trigger destinations", "tags": [ "connect" ], "responses": { "200": { "description": "The connector with its replaced trigger destinations.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectConnector" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "409": { "description": "The request conflicts with the current resource state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "410": { "description": "The requested resource is no longer available.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "422": { "description": "The request cannot be completed in the current state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "501": { "description": "" }, "504": { "description": "" } }, "parameters": [ { "name": "connector", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`.", "in": "path", "required": true, "schema": { "type": "string", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`." } }, { "description": "The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectReplaceTriggerDestinationsRequest" } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "replaceConnectorTriggerDestinations", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.replaceConnectorTriggerDestinations({\n connector: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n connectReplaceTriggerDestinationsRequest: {\n destinations: [],\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/connect/connectors/{connector}/projects": { "get": { "description": "List the projects connected to a connector and the environments where each connection is available.", "operationId": "listConnectorProjectConnections", "security": [ { "bearerToken": [] } ], "summary": "List projects for a connector", "tags": [ "connect" ], "responses": { "200": { "description": "A page of project connections for the connector.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectConnectorProjectConnectionList" } } } }, "400": { "description": "One of the provided values in the request query is invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "409": { "description": "The request conflicts with the current resource state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "410": { "description": "The requested resource is no longer available.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } } }, "parameters": [ { "name": "connector", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`.", "in": "path", "required": true, "schema": { "type": "string", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`." } }, { "name": "limit", "description": "Maximum number of project connections to return. Defaults to 50.", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "description": "Maximum number of project connections to return. Defaults to 50." } }, { "name": "cursor", "description": "Cursor from `pagination.next` on the previous response.", "in": "query", "required": false, "schema": { "type": "string", "description": "Cursor from `pagination.next` on the previous response." } }, { "description": "The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listConnectorProjectConnections", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.listConnectorProjectConnections({\n connector: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/connect/connectors/{connector}/projects/{projectId}": { "get": { "description": "Get the configuration that connects a connector to a project.", "operationId": "getConnectorProjectConnection", "security": [ { "bearerToken": [] } ], "summary": "Get a connector project connection", "tags": [ "connect" ], "responses": { "200": { "description": "The connector project connection.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectProjectConnection" } } } }, "400": { "description": "One of the provided values in the request query is invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "409": { "description": "The request conflicts with the current resource state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "410": { "description": "The requested resource is no longer available.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } } }, "parameters": [ { "name": "connector", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`.", "in": "path", "required": true, "schema": { "type": "string", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`." } }, { "name": "projectId", "description": "Vercel project ID.", "in": "path", "required": true, "schema": { "type": "string", "description": "Vercel project ID." } }, { "description": "The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getConnectorProjectConnection", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.getConnectorProjectConnection({\n connector: \"\",\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Connect a connector to a project, or replace the environments on an existing project connection.", "operationId": "upsertConnectorProjectConnection", "security": [ { "bearerToken": [] } ], "summary": "Create or update a connector project connection", "tags": [ "connect" ], "responses": { "200": { "description": "The connector project connection was created or updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectProjectConnection" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "409": { "description": "The request conflicts with the current resource state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "410": { "description": "The requested resource is no longer available.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } } }, "parameters": [ { "name": "connector", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`.", "in": "path", "required": true, "schema": { "type": "string", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`." } }, { "name": "projectId", "description": "Vercel project ID.", "in": "path", "required": true, "schema": { "type": "string", "description": "Vercel project ID." } }, { "description": "The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectUpsertProjectConnectionRequest" } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "upsertConnectorProjectConnection", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.upsertConnectorProjectConnection({\n connector: \"\",\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n connectUpsertProjectConnectionRequest: {\n environments: [\n \"\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Disconnect a connector from a project.", "operationId": "deleteConnectorProjectConnection", "security": [ { "bearerToken": [] } ], "summary": "Disconnect a connector from a project", "tags": [ "connect" ], "responses": { "204": { "description": "The connector was disconnected from the project." }, "400": { "description": "One of the provided values in the request query is invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "409": { "description": "The request conflicts with the current resource state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "410": { "description": "The requested resource is no longer available.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } } }, "parameters": [ { "name": "connector", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`.", "in": "path", "required": true, "schema": { "type": "string", "description": "Stable connector ID or URL-encoded team-scoped UID. Examples: `scl_abc123` or `slack%2Fmy-bot`." } }, { "name": "projectId", "description": "Vercel project ID.", "in": "path", "required": true, "schema": { "type": "string", "description": "Vercel project ID." } }, { "description": "The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "deleteConnectorProjectConnection", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.connect.deleteConnectorProjectConnection({\n connector: \"\",\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/v2/connect/projects/{projectId}/connectors": { "get": { "description": "List the connectors connected to a project and the environments where each connection is available.", "operationId": "listProjectConnectorConnections", "security": [ { "bearerToken": [] } ], "summary": "List connectors for a project", "tags": [ "connect" ], "responses": { "200": { "description": "A page of connector connections for the project.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectProjectConnectorConnectionList" } } } }, "400": { "description": "One of the provided values in the request query is invalid.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "404": { "description": "The requested resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } }, "410": { "description": "The requested resource is no longer available.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectError" } } } } }, "parameters": [ { "name": "projectId", "description": "Vercel project ID.", "in": "path", "required": true, "schema": { "type": "string", "description": "Vercel project ID." } }, { "name": "limit", "description": "Maximum number of connector connections to return. Defaults to 50.", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 100, "description": "Maximum number of connector connections to return. Defaults to 50." } }, { "name": "cursor", "description": "Cursor from `pagination.next` on the previous response.", "in": "query", "required": false, "schema": { "type": "string", "description": "Cursor from `pagination.next` on the previous response." } }, { "description": "The team ID that scopes the request. Do not send it with slug. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The team slug that scopes the request. Do not send it with teamId. If both are omitted, Vercel uses the team associated with the token or the authenticated user's default team. The request returns 401 if no team can be selected.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "listProjectConnectorConnections", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.connect.listProjectConnectorConnections({\n projectId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/connect/token/{connector}": { "post": { "description": "Get an access token for a connector identified by the path parameter and scoped to the requester.", "operationId": "getConnectorToken", "security": [ { "bearerToken": [] } ], "summary": "Get a Connect token", "tags": [ "connect" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "authorizationId": { "type": "string", "description": "Stable id correlating all tokens (including refreshes) back to the original authorization." }, "claims": { "additionalProperties": true, "type": "object", "description": "Claims extracted from the provider's tokens per the connector's `ForwardedClaims` allow-list. Currently sourced from the OIDC id_token only." }, "connector": { "properties": { "id": { "type": "string" }, "type": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "id", "type", "uid" ], "type": "object" }, "expiresAt": { "type": "number" }, "externalSubject": { "type": "string" }, "installationId": { "type": "string" }, "metadata": { "additionalProperties": true, "type": "object", "description": "Driver-specific metadata (e.g., botUserId for Slack)." }, "name": { "type": "string" }, "tenantId": { "type": "string" }, "token": { "type": "string" }, "tokenGroupId": { "type": "string", "description": "Stable id that groups all tokens with the same parameters across refreshes." }, "tokenId": { "type": "string" } }, "required": [ "connector", "expiresAt", "token", "tokenId" ], "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": "" }, "410": { "description": "" }, "422": { "description": "" }, "429": { "description": "" } }, "parameters": [ { "name": "connector", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "subject": { "anyOf": [ { "title": "type:app", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "app" ] } }, "additionalProperties": true }, { "title": "type:user", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "user" ] }, "id": { "type": "string" }, "issuer": { "type": "string" } }, "additionalProperties": true }, { "title": "type:jwt-bearer", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "jwt-bearer" ] }, "sub": { "type": "string" }, "iss": { "type": "string" }, "aud": { "type": "string" }, "additionalClaims": { "type": "object", "additionalProperties": true } }, "additionalProperties": true }, { "title": "type:token", "type": "object", "required": [ "type", "token" ], "properties": { "type": { "type": "string", "enum": [ "token" ] }, "token": { "type": "string" } }, "additionalProperties": false }, { "title": "type:other", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string" } }, "not": { "properties": { "type": { "type": "string", "enum": [ "token" ] } }, "required": [ "type" ] }, "additionalProperties": true } ] }, "installationId": { "type": "string" }, "audience": { "type": "array", "items": { "type": "string" } }, "scopes": { "type": "array", "items": { "type": "string" } }, "resources": { "type": "array", "items": { "type": "string" } }, "authorizationDetails": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string" } }, "additionalProperties": true } }, "validityBufferMs": { "type": "number" } } } } } } } }, "/v1/connect/authorize/{connector}": { "post": { "description": "Create an authorization request for a connector and return the URL and verifier details needed to complete the flow.", "operationId": "createConnectorAuthorizationRequest", "security": [ { "bearerToken": [] } ], "summary": "Create a Connect authorization request", "tags": [ "connect" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "connector": { "properties": { "displayName": { "type": "string", "description": "Provider-facing display name when the connector type exposes one, falling back to the stored connector name." }, "id": { "type": "string", "description": "Client id (e.g. `scl_…`)." }, "name": { "type": "string", "description": "The connector's own name: the operator-given client name, falling back to the client type's name for legacy rows without one." }, "service": { "type": "string", "description": "Resolved service id when known (e.g. `salesforce`), following the `stored.service ?? typeDef.service ?? stored.type` convention." }, "serviceName": { "type": "string", "description": "Curated display name of the resolved service (e.g. \"Salesforce\"), present when the service is a known service. Suited for end-user surfaces like \"Sign in with {serviceName}\"." }, "type": { "type": "string", "description": "Client type (e.g. `oauth`, `salesforce`)." }, "uid": { "type": "string", "description": "Client uid (e.g. `salesforce/my-org`)." } }, "required": [ "displayName", "id", "name", "type", "uid" ], "type": "object" }, "deviceCode": { "type": "string" }, "expiresAt": { "type": "number" }, "request": { "type": "string" }, "url": { "type": "string" }, "verifier": { "type": "string" } }, "required": [ "connector", "expiresAt", "request", "url", "verifier" ], "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": "" }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "connector", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "subject": { "anyOf": [ { "title": "type:app", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "app" ] } }, "additionalProperties": true }, { "title": "type:user", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "user" ] }, "id": { "type": "string" }, "issuer": { "type": "string" } }, "additionalProperties": true }, { "title": "type:jwt-bearer", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "jwt-bearer" ] }, "sub": { "type": "string" }, "iss": { "type": "string" }, "aud": { "type": "string" }, "additionalClaims": { "type": "object", "additionalProperties": true } }, "additionalProperties": true }, { "title": "type:token", "type": "object", "required": [ "type", "token" ], "properties": { "type": { "type": "string", "enum": [ "token" ] }, "token": { "type": "string" } }, "additionalProperties": false }, { "title": "type:other", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string" } }, "not": { "properties": { "type": { "type": "string", "enum": [ "token" ] } }, "required": [ "type" ] }, "additionalProperties": true } ] }, "installationId": { "type": "string" }, "audience": { "type": "array", "items": { "type": "string" } }, "scopes": { "type": "array", "items": { "type": "string" } }, "resources": { "type": "array", "items": { "type": "string" } }, "authorizationDetails": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string" } }, "additionalProperties": true } }, "validityBufferMs": { "type": "number" }, "returnUrl": { "type": "string" }, "webhook": { "type": "string" }, "prompt": { "type": "string" }, "deviceCode": { "type": "boolean" }, "expiresInMs": { "type": "number" }, "additionalParams": { "type": "object", "additionalProperties": { "type": "string" } } } } } } } } }, "/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": { "created": { "type": "number" }, "payload": { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "entrypoint": { "type": "string" }, "name": { "type": "string" }, "path": { "type": "string" }, "readyState": { "type": "string" }, "serviceName": { "type": "string" }, "step": { "type": "string" }, "type": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "proxy": { "properties": { "cacheId": { "type": "string" }, "clientIp": { "type": "string" }, "host": { "type": "string" }, "lambdaRegion": { "type": "string" }, "method": { "type": "string" }, "path": { "type": "string" }, "pathType": { "type": "string" }, "pathTypeVariant": { "type": "string" }, "referer": { "type": "string" }, "region": { "type": "string" }, "responseByteSize": { "type": "number" }, "scheme": { "type": "string" }, "statusCode": { "type": "number" }, "timestamp": { "type": "number" }, "userAgent": { "items": { "type": "string" }, "type": "array" }, "vercelCache": { "type": "string", "enum": [ "BYPASS", "HIT", "MISS", "PRERENDER", "REVALIDATED", "STALE" ] }, "vercelId": { "type": "string" }, "wafAction": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit" ] }, "wafRuleId": { "type": "string" } }, "required": [ "host", "method", "timestamp" ], "type": "object" }, "requestId": { "type": "string" }, "serial": { "type": "string" }, "statusCode": { "type": "number" }, "text": { "type": "string" } }, "required": [ "date", "deploymentId", "id", "serial" ], "type": "object" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] } }, "required": [ "created", "payload", "type" ], "type": "object" }, { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "entrypoint": { "type": "string" }, "name": { "type": "string" }, "path": { "type": "string" }, "readyState": { "type": "string" }, "serviceName": { "type": "string" }, "step": { "type": "string" }, "type": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "level": { "type": "string", "enum": [ "error", "warning" ] }, "serial": { "type": "string" }, "text": { "type": "string" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] } }, "required": [ "created", "date", "deploymentId", "id", "info", "serial", "type" ], "type": "object" }, { "oneOf": [ { "properties": { "created": { "type": "number" }, "payload": { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "entrypoint": { "type": "string" }, "name": { "type": "string" }, "path": { "type": "string" }, "readyState": { "type": "string" }, "serviceName": { "type": "string" }, "step": { "type": "string" }, "type": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "proxy": { "properties": { "cacheId": { "type": "string" }, "clientIp": { "type": "string" }, "host": { "type": "string" }, "lambdaRegion": { "type": "string" }, "method": { "type": "string" }, "path": { "type": "string" }, "pathType": { "type": "string" }, "pathTypeVariant": { "type": "string" }, "referer": { "type": "string" }, "region": { "type": "string" }, "responseByteSize": { "type": "number" }, "scheme": { "type": "string" }, "statusCode": { "type": "number" }, "timestamp": { "type": "number" }, "userAgent": { "items": { "type": "string" }, "type": "array" }, "vercelCache": { "type": "string", "enum": [ "BYPASS", "HIT", "MISS", "PRERENDER", "REVALIDATED", "STALE" ] }, "vercelId": { "type": "string" }, "wafAction": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit" ] }, "wafRuleId": { "type": "string" } }, "required": [ "host", "method", "timestamp" ], "type": "object" }, "requestId": { "type": "string" }, "serial": { "type": "string" }, "statusCode": { "type": "number" }, "text": { "type": "string" } }, "required": [ "date", "deploymentId", "id", "serial" ], "type": "object" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] } }, "required": [ "created", "payload", "type" ], "type": "object" }, { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "entrypoint": { "type": "string" }, "name": { "type": "string" }, "path": { "type": "string" }, "readyState": { "type": "string" }, "serviceName": { "type": "string" }, "step": { "type": "string" }, "type": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "level": { "type": "string", "enum": [ "error", "warning" ] }, "serial": { "type": "string" }, "text": { "type": "string" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] } }, "required": [ "created", "date", "deploymentId", "id", "info", "serial", "type" ], "type": "object" }, { "properties": { "date": { "type": "number" }, "deploymentId": { "type": "string" }, "type": { "type": "string", "enum": [ "alias-assigned" ] }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasWarning": { "nullable": true, "properties": { "action": { "type": "string" }, "code": { "type": "string" }, "link": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" } }, "required": [ "alias", "aliasError", "aliasWarning", "date", "deploymentId", "type" ], "type": "object" } ] } ], "nullable": true }, "nullable": true } }, "application/stream+json": { "schema": { "oneOf": [ { "properties": { "created": { "type": "number" }, "payload": { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "entrypoint": { "type": "string" }, "name": { "type": "string" }, "path": { "type": "string" }, "readyState": { "type": "string" }, "serviceName": { "type": "string" }, "step": { "type": "string" }, "type": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "proxy": { "properties": { "cacheId": { "type": "string" }, "clientIp": { "type": "string" }, "host": { "type": "string" }, "lambdaRegion": { "type": "string" }, "method": { "type": "string" }, "path": { "type": "string" }, "pathType": { "type": "string" }, "pathTypeVariant": { "type": "string" }, "referer": { "type": "string" }, "region": { "type": "string" }, "responseByteSize": { "type": "number" }, "scheme": { "type": "string" }, "statusCode": { "type": "number" }, "timestamp": { "type": "number" }, "userAgent": { "items": { "type": "string" }, "type": "array" }, "vercelCache": { "type": "string", "enum": [ "BYPASS", "HIT", "MISS", "PRERENDER", "REVALIDATED", "STALE" ] }, "vercelId": { "type": "string" }, "wafAction": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit" ] }, "wafRuleId": { "type": "string" } }, "required": [ "host", "method", "timestamp" ], "type": "object" }, "requestId": { "type": "string" }, "serial": { "type": "string" }, "statusCode": { "type": "number" }, "text": { "type": "string" } }, "required": [ "date", "deploymentId", "id", "serial" ], "type": "object" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] } }, "required": [ "created", "payload", "type" ], "type": "object" }, { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "entrypoint": { "type": "string" }, "name": { "type": "string" }, "path": { "type": "string" }, "readyState": { "type": "string" }, "serviceName": { "type": "string" }, "step": { "type": "string" }, "type": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "level": { "type": "string", "enum": [ "error", "warning" ] }, "serial": { "type": "string" }, "text": { "type": "string" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] } }, "required": [ "created", "date", "deploymentId", "id", "info", "serial", "type" ], "type": "object" }, { "oneOf": [ { "properties": { "created": { "type": "number" }, "payload": { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "entrypoint": { "type": "string" }, "name": { "type": "string" }, "path": { "type": "string" }, "readyState": { "type": "string" }, "serviceName": { "type": "string" }, "step": { "type": "string" }, "type": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "proxy": { "properties": { "cacheId": { "type": "string" }, "clientIp": { "type": "string" }, "host": { "type": "string" }, "lambdaRegion": { "type": "string" }, "method": { "type": "string" }, "path": { "type": "string" }, "pathType": { "type": "string" }, "pathTypeVariant": { "type": "string" }, "referer": { "type": "string" }, "region": { "type": "string" }, "responseByteSize": { "type": "number" }, "scheme": { "type": "string" }, "statusCode": { "type": "number" }, "timestamp": { "type": "number" }, "userAgent": { "items": { "type": "string" }, "type": "array" }, "vercelCache": { "type": "string", "enum": [ "BYPASS", "HIT", "MISS", "PRERENDER", "REVALIDATED", "STALE" ] }, "vercelId": { "type": "string" }, "wafAction": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit" ] }, "wafRuleId": { "type": "string" } }, "required": [ "host", "method", "timestamp" ], "type": "object" }, "requestId": { "type": "string" }, "serial": { "type": "string" }, "statusCode": { "type": "number" }, "text": { "type": "string" } }, "required": [ "date", "deploymentId", "id", "serial" ], "type": "object" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] } }, "required": [ "created", "payload", "type" ], "type": "object" }, { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "entrypoint": { "type": "string" }, "name": { "type": "string" }, "path": { "type": "string" }, "readyState": { "type": "string" }, "serviceName": { "type": "string" }, "step": { "type": "string" }, "type": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "level": { "type": "string", "enum": [ "error", "warning" ] }, "serial": { "type": "string" }, "text": { "type": "string" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] } }, "required": [ "created", "date", "deploymentId", "id", "info", "serial", "type" ], "type": "object" }, { "properties": { "date": { "type": "number" }, "deploymentId": { "type": "string" }, "type": { "type": "string", "enum": [ "alias-assigned" ] }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasWarning": { "nullable": true, "properties": { "action": { "type": "string" }, "code": { "type": "string" }, "link": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" } }, "required": [ "alias", "aliasError", "aliasWarning", "date", "deploymentId", "type" ], "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": "" }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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 }, { "type": "object", "properties": { "kind": { "type": "string" }, "claimRules": { "type": "array", "items": { "type": "object", "required": [ "claims" ], "properties": { "when": { "type": "object", "properties": { "role": { "type": "array", "minItems": 1, "maxItems": 32, "items": { "type": "string", "maxLength": 32 }, "description": "Applies only when the token is minted for one of these roles." }, "environment": { "type": "array", "minItems": 1, "maxItems": 32, "items": { "type": "string" }, "description": "Applies only when the token is minted for one of these environments: `production`, `preview`, `development`, or a custom environment slug. A custom environment also matches `preview`." } }, "additionalProperties": false }, "claims": { "type": "object", "additionalProperties": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] }, "description": "Claims to set (string, number, or boolean), shallow-merged over earlier rules and over the default claims. `null` removes a claim. Reserved claims cannot be set; `aud` and `sub` can be overridden with a string but not removed." } }, "additionalProperties": false }, "description": "Ordered rules resolved at mint time. Later rules win and shallow-merge over earlier ones." } }, "required": [ "kind", "claimRules" ], "additionalProperties": false, "description": "Claim rules applied after the resource’s own rules when this deployment mints a resource token. Reserved claims cannot be set." } ] } } }, "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": "Returns a reduced view of the deployment with public information only. Private fields are omitted when the requester is not the deployment owner.\nReturns the deployment object for the authenticated owner, including private fields such as environment variables, build log URLs, and internal metadata.\nReturns the reduced deployment view for anonymous (`vcn_`) callers. Pool-team details are withheld.", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "type": "boolean", "enum": [ false, true ] }, "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 }, "aliasWarning": { "nullable": true, "properties": { "action": { "type": "string" }, "code": { "type": "string" }, "link": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "duration": { "properties": { "endTime": { "type": "number", "description": "Unix timestamp in milliseconds when the build container exited." }, "endTimeCapped": { "type": "number", "description": "Build-container exit Unix timestamp in milliseconds, capped at 45 minutes after `startTime`." }, "startTime": { "type": "number", "description": "Unix timestamp in milliseconds when the deployment entered BUILDING." }, "timeForBilling": { "type": "number", "description": "Billable build-container duration in milliseconds, capped at 45 minutes, rounded up to a whole minute, with a one-minute minimum." }, "timeToContainerExit": { "type": "number", "description": "Milliseconds from entering BUILDING until the build container exited, without the billing cap." }, "timeToContainerExitCapped": { "type": "number", "description": "Build-container duration in milliseconds, capped at 45 minutes and without billing rounding." }, "timeToReady": { "type": "number", "description": "Milliseconds from entering BUILDING until the deployment reached its current ready state." } }, "type": "object" }, "errorCode": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "readyState": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "target": { "nullable": true, "type": "string", "enum": [ "production", "staging", 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 } }, "required": [ "aliasAssigned", "duration", "id", "readyState" ], "type": "object", "description": "Returns the reduced deployment view for anonymous (`vcn_`) callers. Pool-team details are withheld." }, { "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 }, "aliasAssignedAt": { "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", "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" }, "aliasWarning": { "nullable": true, "properties": { "action": { "type": "string" }, "code": { "type": "string" }, "link": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "alwaysRefuseToBuild": { "type": "boolean", "enum": [ false, true ] }, "atproto": { "oneOf": [ { "properties": { "enabled": { "type": "boolean", "enum": [ false ] } }, "required": [ "enabled" ], "type": "object" }, { "properties": { "enabled": { "type": "boolean", "enum": [ true ] }, "subscription": { "properties": { "collections": { "items": { "type": "string" }, "type": "array" }, "dids": { "items": { "type": "string" }, "type": "array" }, "kinds": { "items": { "type": "string", "enum": [ "account", "commit", "identity", "sync" ] }, "type": "array" }, "path": { "type": "string" } }, "required": [ "collections", "path" ], "type": "object" } }, "required": [ "enabled", "subscription" ], "type": "object" } ] }, "attribution": { "properties": { "commitMeta": { "properties": { "email": { "type": "string", "description": "Email from git commit author" }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Whether the commit was signed/verified (GitHub only, others return undefined)" }, "name": { "type": "string", "description": "Name from git commit author" } }, "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" }, "provider": { "type": "string", "description": "The git provider (github, gitlab, bitbucket)" }, "type": { "type": "string", "description": "User type" } }, "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" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Team roles at time of deployment" }, "username": { "type": "string", "description": "Vercel username" } }, "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." }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "description": "applies to custom domains only, defaults to `true`" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "bootedAt": { "type": "number" }, "build": { "properties": { "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "env" ], "type": "object" }, "buildArtifactUrls": { "items": { "type": "string" }, "type": "array" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildErrorAt": { "type": "number" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "config": { "additionalProperties": true, "type": "object" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "canceledAt": { "type": "number" }, "checks": { "properties": { "deployment-alias": { "properties": { "completedAt": { "type": "number" }, "startedAt": { "type": "number" }, "state": { "type": "string", "enum": [ "failed", "pending", "succeeded" ] } }, "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" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "config": { "properties": { "functionMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionTimeout": { "nullable": true, "type": "number" }, "functionType": { "type": "string", "enum": [ "fluid", "standard" ] }, "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": [ "PROJECT_SETTING", "SKIP_QUEUE", "TEAM_SETTING" ], "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": [ "basic", "enhanced", "standard", "turbo", null ], "description": "Machine type that was used for the build." } }, "type": "object" } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." }, "secureComputeFallbackRegion": { "nullable": true, "type": "string" }, "secureComputePrimaryRegion": { "nullable": true, "type": "string" }, "version": { "type": "number" } }, "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" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "type": "string" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "createdIn": { "type": "string" }, "creator": { "properties": { "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" }, "type": { "type": "string", "enum": [ "app", "integration", "system", "user" ], "description": "Principal type of the deployment creator." }, "uid": { "type": "string", "description": "Stable creator id across principal types (user id, app id, integration configuration id, or `system`).", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "crons": { "items": { "properties": { "path": { "type": "string" }, "schedule": { "type": "string" } }, "required": [ "path", "schedule" ], "type": "object" }, "type": "array" }, "customEnvironment": { "oneOf": [ { "properties": { "branchMatcher": { "properties": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "domains": { "items": { "properties": { "apexName": { "type": "string" }, "createdAt": { "type": "number" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "gitBranch": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "updatedAt": { "type": "number" }, "verification": { "items": { "properties": { "domain": { "type": "string" }, "reason": { "type": "string" }, "type": { "type": "string" }, "value": { "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`." }, "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", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "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": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "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." } ] }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "deletedAt": { "nullable": true, "type": "number", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "duration": { "properties": { "endTime": { "type": "number", "description": "Unix timestamp in milliseconds when the build container exited." }, "endTimeCapped": { "type": "number", "description": "Build-container exit Unix timestamp in milliseconds, capped at 45 minutes after `startTime`." }, "startTime": { "type": "number", "description": "Unix timestamp in milliseconds when the deployment entered BUILDING." }, "timeForBilling": { "type": "number", "description": "Billable build-container duration in milliseconds, capped at 45 minutes, rounded up to a whole minute, with a one-minute minimum." }, "timeToContainerExit": { "type": "number", "description": "Milliseconds from entering BUILDING until the build container exited, without the billing cap." }, "timeToContainerExitCapped": { "type": "number", "description": "Build-container duration in milliseconds, capped at 45 minutes and without billing rounding." }, "timeToReady": { "type": "number", "description": "Milliseconds from entering BUILDING until the deployment reached its current ready state." } }, "type": "object" }, "env": { "items": { "type": "string" }, "type": "array" }, "errorCode": { "type": "string" }, "errorLink": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" }, "errorStep": { "type": "string" }, "flags": { "oneOf": [ { "properties": { "definitions": { "additionalProperties": { "properties": { "description": { "type": "string" }, "options": { "items": { "properties": { "label": { "type": "string" }, "value": { "$ref": "#/components/schemas/FlagJSONValue" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "url": { "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." } ] }, "functions": { "nullable": true, "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "gitRepo": { "nullable": true, "oneOf": [ { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "projectId": { "type": "number" }, "type": { "type": "string", "enum": [ "gitlab" ] }, "url": { "type": "string" } }, "required": [ "defaultBranch", "name", "namespace", "ownerType", "path", "private", "projectId", "type", "url" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "org": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "repoOwnerId": { "type": "number" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "repoId", "repoOwnerId", "type" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repoUuid": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repoUuid", "slug", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "org": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "type" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string", "description": "Owner (namespace) slug." }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "type": { "type": "string", "enum": [ "cursor-origin" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repo", "repoId", "type" ], "type": "object" } ] }, "gitSource": { "oneOf": [ { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "projectId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" } }, "required": [ "repoUuid", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] } }, "required": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "commitMetadata": { "properties": { "author": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "committer": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "message": { "type": "string" } }, "required": [ "author", "committer", "message" ], "type": "object" }, "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "repoPushedAt": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] } }, "required": [ "repoId", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug." }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "cursor-origin" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "gitUrl": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "custom" ] } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "number" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "projectId", "ref", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "ref": { "type": "string" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" } }, "required": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "commitMetadata": { "properties": { "author": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "committer": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "message": { "type": "string" } }, "required": [ "author", "committer", "message" ], "type": "object" }, "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "repoPushedAt": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "cursor-origin" ] } }, "required": [ "owner", "ref", "repo", "repoId", "sha", "type" ], "type": "object" } ] }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "images": { "properties": { "contentDispositionType": { "type": "string", "enum": [ "attachment", "inline" ] }, "contentSecurityPolicy": { "type": "string" }, "dangerouslyAllowSVG": { "type": "boolean", "enum": [ false, true ] }, "domains": { "items": { "type": "string" }, "type": "array" }, "formats": { "items": { "type": "string", "enum": [ "image/avif", "image/webp" ] }, "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" }, "qualities": { "items": { "type": "number" }, "type": "array" }, "remotePatterns": { "items": { "properties": { "hostname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single subdomain. Double `**` matches any number of subdomains." }, "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "port": { "type": "string", "description": "Can be literal port such as `8080` or empty string meaning no port." }, "protocol": { "type": "string", "enum": [ "http", "https" ], "description": "Must be `http` or `https`." }, "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" }, "sizes": { "items": { "type": "number" }, "type": "array" } }, "type": "object" }, "initReadyAt": { "type": "number" }, "inspectorUrl": { "nullable": true, "type": "string" }, "integrations": { "properties": { "claimedAt": { "type": "number" }, "completedAt": { "type": "number" }, "skippedAt": { "type": "number" }, "skippedBy": { "type": "string" }, "startedAt": { "type": "number" }, "status": { "type": "string", "enum": [ "error", "pending", "ready", "skipped", "timeout" ] } }, "required": [ "startedAt", "status" ], "type": "object" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "isInConcurrentBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "isInstantStatic": { "type": "boolean", "enum": [ false, true ], "description": "Whether this deployment completed through the instant static fast path." }, "isInSystemBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "createdAt": { "type": "number" }, "entrypoint": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "functionName": { "type": "string" }, "path": { "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" }, "manualProvisioning": { "properties": { "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" }, "state": { "type": "string", "enum": [ "COMPLETE", "PENDING", "TIMEOUT" ], "description": "Current provisioning state" } }, "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" }, "microfrontends": { "oneOf": [ { "properties": { "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." }, "isDefaultApp": { "type": "boolean", "enum": [ false ] } }, "required": [ "defaultAppProjectName", "groupIds" ], "type": "object" }, { "properties": { "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." }, "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "mfeConfigUploadState": { "type": "string", "enum": [ "no_config", "success", "waiting_on_build" ], "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." } }, "required": [ "defaultAppProjectName", "groupIds", "isDefaultApp" ], "type": "object" } ] }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ], "description": "If set it overrides the `projectSettings.nodeVersion` for this deployment." }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "originCacheRegion": { "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)" }, "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" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "platform": { "properties": { "creator": { "properties": { "avatar": { "type": "string", "description": "URL of the platform user's avatar image." }, "name": { "type": "string", "description": "Display name of the platform user." } }, "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." }, "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." }, "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)." } }, "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)" }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "project": { "properties": { "framework": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "projectId": { "type": "string" }, "projectSettings": { "properties": { "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "factory-eve", "fastapi", "fasthtml", "fastify", "flask", "gatsby", "go", "gridsome", "h3", "hexo", "hono", "hugo", "hydrogen", "ionic-angular", "ionic-react", "jekyll", "koa", "mastra", "middleman", "nestjs", "nextjs", "nitro", "node", "nuxtjs", "parcel", "polymer", "preact", "python", "react-router", "redwoodjs", "remix", "ruby", "rust", "saber", "sanity", "sanity-v2", "sapper", "scully", "services", "solidstart", "solidstart-1", "stencil", "storybook", "svelte", "sveltekit", "sveltekit-1", "tanstack-start", "tanstack-start-lovable", "umijs", "vite", "vitepress", "vue", "vuepress", "xmcp", "zola", null ] }, "installCommand": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "outputDirectory": { "nullable": true, "type": "string" }, "speedInsights": { "properties": { "canceledAt": { "type": "number" }, "dataReceivedAt": { "type": "number", "description": "When the first free (not Speed Insights Plus) production data point was observed, in ms. Set once by subscriber-analytics-events; projects that already had data before this field shipped get it backfilled on their next batch, so it reads \"first free data point observed\", not necessarily \"first ever\"." }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "webAnalytics": { "properties": { "canceledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] }, "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "type": "object" }, "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" }, "readyState": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "readyStateReason": { "type": "string" }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ], "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" ] }, "resourceConfig": { "properties": { "buildMachine": { "properties": { "cores": { "type": "number", "description": "Number of cores the build machine ran with. Set at dispatch time once the build lands on a hive." }, "defaultPurchaseType": { "type": "string", "enum": [ "basic", "enhanced", "none", "standard" ], "description": "The build machine tier included with the customer's plan. For most customers this is standard; enhanced entitlements include enhanced, while `none` means every build is billed at its purchase type." }, "machineSelectionType": { "type": "string", "enum": [ "elastic", "fixed" ], "description": "Whether the build ran on a fixed or elastic machine. Used to drive billing for the build." }, "memory": { "type": "number", "description": "Memory, in MiB, the build machine ran with. Set at dispatch time once the build lands on a hive." }, "purchaseType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ], "description": "Machine type which was purchased/selected for this build. `basic` is the 2vCPU tier, recorded on the deployment so the build pipeline can detect a basic build without consulting the project." }, "selectionSource": { "type": "string", "enum": [ "deployment-override", "elastic-algorithm", "plan-default", "project-setting", "team-entitlement", "team-setting" ], "description": "The setting which selected the build machine when the deployment was created. Frozen here so later project or team changes do not rewrite its history." } }, "type": "object", "description": "Build machine configuration recorded for this deployment's build. See {@link DeploymentBuildMachine}. Distinct from the team/user `resourceConfig.buildMachine`, which only carries `default`." } }, "type": "object" }, "routes": { "nullable": true, "items": { "oneOf": [ { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "continue": { "type": "boolean", "enum": [ false, true ] }, "dest": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "important": { "type": "boolean", "enum": [ false, true ] }, "locale": { "properties": { "cookie": { "type": "string" }, "redirect": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "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." }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "override": { "type": "boolean", "enum": [ false, true ] }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "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, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`)." }, "src": { "type": "string" }, "status": { "type": "number" }, "statusCode": { "type": "number" }, "transforms": { "items": { "oneOf": [ { "properties": { "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "src" ], "type": "object" }, { "properties": { "dest": { "type": "string" }, "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" }, { "properties": { "continue": { "type": "boolean", "enum": [ false, true ] }, "middleware": { "type": "number", "enum": [ 0 ] }, "src": { "type": "string" } }, "required": [ "continue", "middleware", "src" ], "type": "object" } ] }, "type": "array" }, "seatBlock": { "properties": { "blockCode": { "type": "string", "enum": [ "COMMIT_AUTHOR_REQUIRED", "TEAM_ACCESS_REQUIRED" ], "description": "The NSNB decision code for the seat block. TODO: We should consolidate block types." }, "gitProvider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ], "description": "The git provider type associated with gitUserId." }, "gitUserId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "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." }, "userId": { "type": "string", "description": "The blocked vercel user ID." } }, "required": [ "blockCode" ], "type": "object", "description": "NSNB Blocked metadata" }, "services": { "items": { "oneOf": [ { "properties": { "buildCommand": { "type": "string" }, "builder": { "properties": { "config": { "properties": { "buildCommand": { "type": "string" }, "buildpack": { "type": "string", "description": "Buildpack runtime slug (e.g. \"ruby\")." }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "bunVersion": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "devCommand": { "type": "string" }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "framework": { "nullable": true, "type": "string" }, "functions": { "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "installCommand": { "type": "string" }, "ldsflags": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "nodeVersion": { "type": "string" }, "outputDirectory": { "type": "string" }, "projectSettings": { "properties": { "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "framework": { "nullable": true, "type": "string" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "installCommand": { "nullable": true, "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "rust": { "type": "string" }, "scheduleFunction": { "properties": { "entrypoints": { "type": "array", "items": { "properties": { "entrypoint": { "type": "string", "description": "Runtime-specific entrypoint locator from `vercel.json`." }, "scheduleNames": { "items": { "type": "string" }, "type": "array", "description": "Names of the schedules that dispatch to this entrypoint, in config order." }, "sourceFile": { "type": "string", "description": "Project-relative source file that contains the entrypoint." } }, "required": [ "entrypoint", "scheduleNames", "sourceFile" ], "type": "object" }, "minItems": 1 }, "outputPath": { "type": "string", "description": "Function output path every schedule in this build targets." } }, "required": [ "entrypoints", "outputPath" ], "type": "object", "description": "Set when this build produces a function for schedule entrypoints." }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "entrypoint": { "type": "string" }, "env": { "additionalProperties": { "properties": { "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service-ref" ] } }, "required": [ "service", "type" ], "type": "object" }, "type": "object" }, "framework": { "type": "string" }, "group": { "type": "string" }, "handlerFunction": { "type": "string" }, "installCommand": { "type": "string" }, "name": { "type": "string" }, "preDeployCommand": { "type": "string" }, "routePrefix": { "type": "string" }, "routePrefixSource": { "type": "string", "enum": [ "configured", "generated" ] }, "runtime": { "type": "string" }, "schedule": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "schema": { "type": "string", "enum": [ "experimentalServices" ] }, "subdomain": { "type": "string" }, "topics": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "items": { "properties": { "initialDelaySeconds": { "type": "number" }, "retryAfterSeconds": { "type": "number" }, "topic": { "type": "string" } }, "required": [ "topic" ], "type": "object" }, "type": "array" } ] }, "trigger": { "type": "string", "enum": [ "queue", "schedule", "workflow" ] }, "type": { "type": "string", "enum": [ "cron", "job", "web", "worker" ] }, "workspace": { "type": "string" } }, "required": [ "builder", "name", "schema", "type", "workspace" ], "type": "object", "description": "Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime." }, { "properties": { "bindings": { "items": { "properties": { "env": { "type": "string", "description": "Environment variable name that will store the generated value" }, "format": { "type": "string", "enum": [ "url" ], "description": "Generated value shape, must be `\"url\"`." }, "service": { "type": "string", "description": "Target service name from `services`." }, "type": { "type": "string", "enum": [ "service" ], "description": "If present, must be `\"service\"` for Service-to-Service HTTP bindings." } }, "required": [ "env", "format", "service" ], "type": "object", "description": "Caller-side bindings to other services." }, "type": "array", "description": "Caller-side bindings to other services." }, "buildCommand": { "type": "string" }, "builder": { "properties": { "config": { "properties": { "buildCommand": { "type": "string" }, "buildpack": { "type": "string", "description": "Buildpack runtime slug (e.g. \"ruby\")." }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "bunVersion": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "devCommand": { "type": "string" }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "framework": { "nullable": true, "type": "string" }, "functions": { "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "installCommand": { "type": "string" }, "ldsflags": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "nodeVersion": { "type": "string" }, "outputDirectory": { "type": "string" }, "projectSettings": { "properties": { "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "framework": { "nullable": true, "type": "string" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "installCommand": { "nullable": true, "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "rust": { "type": "string" }, "scheduleFunction": { "properties": { "entrypoints": { "type": "array", "items": { "properties": { "entrypoint": { "type": "string", "description": "Runtime-specific entrypoint locator from `vercel.json`." }, "scheduleNames": { "items": { "type": "string" }, "type": "array", "description": "Names of the schedules that dispatch to this entrypoint, in config order." }, "sourceFile": { "type": "string", "description": "Project-relative source file that contains the entrypoint." } }, "required": [ "entrypoint", "scheduleNames", "sourceFile" ], "type": "object" }, "minItems": 1 }, "outputPath": { "type": "string", "description": "Function output path every schedule in this build targets." } }, "required": [ "entrypoints", "outputPath" ], "type": "object", "description": "Set when this build produces a function for schedule entrypoints." }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object", "description": "Builder selected by the resolver." }, "cleanUrls": { "type": "boolean", "enum": [ false, true ] }, "command": { "items": { "type": "string" }, "type": "array", "description": "Command override for `runtime: \"container\"` services." }, "devCommand": { "type": "string" }, "entrypoint": { "type": "string", "description": "Resolved entrypoint, relative to the service root." }, "framework": { "type": "string" }, "functions": { "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "Function configuration scoped to this service." }, "type": "object", "description": "Function configuration scoped to this service." }, "headers": { "items": { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "items": { "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "source": { "type": "string" } }, "required": [ "headers", "source" ], "type": "object" }, "type": "array" }, "ignoreCommand": { "type": "string" }, "installCommand": { "type": "string" }, "name": { "type": "string" }, "outputDirectory": { "type": "string" }, "redirects": { "items": { "properties": { "destination": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "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" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "source": { "type": "string" }, "statusCode": { "type": "number" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "rewrites": { "items": { "properties": { "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "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" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "source": { "type": "string" }, "statusCode": { "type": "number" }, "transforms": { "items": { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" }, "type": "array" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "root": { "type": "string", "description": "Path to the service root, relative to the project root." }, "routes": { "items": { "oneOf": [ { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "continue": { "type": "boolean", "enum": [ false, true ] }, "dest": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "important": { "type": "boolean", "enum": [ false, true ] }, "locale": { "properties": { "cookie": { "type": "string" }, "redirect": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "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." }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "override": { "type": "boolean", "enum": [ false, true ] }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "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, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`)." }, "src": { "type": "string" }, "status": { "type": "number" }, "statusCode": { "type": "number" }, "transforms": { "items": { "oneOf": [ { "properties": { "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "src" ], "type": "object" }, { "properties": { "dest": { "type": "string" }, "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" } ] }, "type": "array" }, "runtime": { "type": "string" }, "schema": { "type": "string", "enum": [ "experimentalServicesV2" ] }, "trailingSlash": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "builder", "name", "root", "schema" ], "type": "object", "description": "Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime." } ] }, "type": "array", "description": "Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime." }, "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", "drop", "git", "git-deploy-hook", "import", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it.", "example": "cli" }, "status": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "target": { "nullable": true, "type": "string", "enum": [ "production", "staging", 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 }, "team": { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object", "description": "The team that owns the deployment if any" }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "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" }, "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" ] }, "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 } }, "required": [ "aliasAssigned", "bootedAt", "build", "buildSkipped", "buildingAt", "createdAt", "createdIn", "creator", "duration", "env", "id", "inspectorUrl", "isInConcurrentBuildsQueue", "isInSystemBuildsQueue", "meta", "name", "ownerId", "plan", "projectId", "projectSettings", "public", "readyState", "regions", "routes", "status", "type", "url", "version" ], "type": "object", "description": "Returns the deployment object for the authenticated owner, including private fields such as environment variables, build log URLs, and internal metadata." }, { "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 }, "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" }, "aliasWarning": { "nullable": true, "properties": { "action": { "type": "string" }, "code": { "type": "string" }, "link": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "description": "applies to custom domains only, defaults to `true`" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "bootedAt": { "type": "number" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildErrorAt": { "type": "number" }, "buildingAt": { "type": "number" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "canceledAt": { "type": "number" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "creator": { "properties": { "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" }, "type": { "type": "string", "enum": [ "app", "integration", "system", "user" ], "description": "Principal type of the deployment creator." }, "uid": { "type": "string", "description": "Stable creator id across principal types (user id, app id, integration configuration id, or `system`).", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "customEnvironment": { "oneOf": [ { "properties": { "branchMatcher": { "properties": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "domains": { "items": { "properties": { "apexName": { "type": "string" }, "createdAt": { "type": "number" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "gitBranch": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "updatedAt": { "type": "number" }, "verification": { "items": { "properties": { "domain": { "type": "string" }, "reason": { "type": "string" }, "type": { "type": "string" }, "value": { "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`." }, "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", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "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": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "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." } ] }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "deletedAt": { "nullable": true, "type": "number", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "duration": { "properties": { "endTime": { "type": "number", "description": "Unix timestamp in milliseconds when the build container exited." }, "endTimeCapped": { "type": "number", "description": "Build-container exit Unix timestamp in milliseconds, capped at 45 minutes after `startTime`." }, "startTime": { "type": "number", "description": "Unix timestamp in milliseconds when the deployment entered BUILDING." }, "timeForBilling": { "type": "number", "description": "Billable build-container duration in milliseconds, capped at 45 minutes, rounded up to a whole minute, with a one-minute minimum." }, "timeToContainerExit": { "type": "number", "description": "Milliseconds from entering BUILDING until the build container exited, without the billing cap." }, "timeToContainerExitCapped": { "type": "number", "description": "Build-container duration in milliseconds, capped at 45 minutes and without billing rounding." }, "timeToReady": { "type": "number", "description": "Milliseconds from entering BUILDING until the deployment reached its current ready state." } }, "type": "object", "description": "Build timestamps, elapsed durations, and billing measurements. The object is always present, but fields are omitted when their source timestamps are unavailable, such as for running or legacy deployments." }, "errorCode": { "type": "string" }, "errorLink": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" }, "errorStep": { "type": "string" }, "gitSource": { "oneOf": [ { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "projectId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" } }, "required": [ "repoUuid", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] } }, "required": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "commitMetadata": { "properties": { "author": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "committer": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "message": { "type": "string" } }, "required": [ "author", "committer", "message" ], "type": "object" }, "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "repoPushedAt": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] } }, "required": [ "repoId", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug." }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "cursor-origin" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "gitUrl": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "custom" ] } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "number" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "projectId", "ref", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "ref": { "type": "string" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" } }, "required": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "commitMetadata": { "properties": { "author": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "committer": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "message": { "type": "string" } }, "required": [ "author", "committer", "message" ], "type": "object" }, "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "repoPushedAt": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "cursor-origin" ] } }, "required": [ "owner", "ref", "repo", "repoId", "sha", "type" ], "type": "object" } ] }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "initReadyAt": { "type": "number" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "createdAt": { "type": "number" }, "entrypoint": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "functionName": { "type": "string" }, "path": { "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" }, "manualProvisioning": { "properties": { "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" }, "state": { "type": "string", "enum": [ "COMPLETE", "PENDING", "TIMEOUT" ], "description": "Current provisioning state" } }, "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" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ], "description": "If set it overrides the `projectSettings.nodeVersion` for this deployment." }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "originCacheRegion": { "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" }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "project": { "properties": { "framework": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "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" }, "readyState": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "readyStateReason": { "type": "string" }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ], "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", "drop", "git", "git-deploy-hook", "import", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it.", "example": "cli" }, "status": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "target": { "nullable": true, "type": "string", "enum": [ "production", "staging", 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 }, "team": { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object", "description": "The team that owns the deployment if any" }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "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" }, "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" ] }, "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 } }, "required": [ "aliasAssigned", "bootedAt", "buildSkipped", "buildingAt", "createdAt", "creator", "duration", "id", "meta", "name", "public", "readyState", "regions", "status", "type", "url", "version" ], "type": "object", "description": "Returns a reduced view of the deployment with public information only. Private fields are omitted when the requester is not the deployment owner." } ] } } } }, "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" }, "410": { "description": "" }, "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": "When `true`, the response includes the `gitSource` object with the commit SHA, branch name, and connected repository metadata. Defaults to `false`.", "in": "query", "required": false, "schema": { "description": "When `true`, the response includes the `gitSource` object with the commit SHA, branch name, and connected repository metadata. Defaults to `false`.", "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": "Creates a new deployment for the authenticated team or user. For non-git deployments, upload files first via the file upload API, then reference them here by SHA — or inline small files directly in the request body. To redeploy an existing deployment, provide its `deploymentId`; all settings are inherited unless explicitly overridden. The deployment begins building immediately and transitions through `QUEUED` → `INITIALIZING` → `BUILDING` before reaching `READY` or `ERROR`.", "operationId": "createDeployment", "security": [ { "bearerToken": [] } ], "summary": "Create a new deployment", "tags": [ "deployments" ], "responses": { "200": { "description": "Returns the newly created deployment object. Poll `readyState` to track build progress. See https://vercel.com/docs/deployments/deployment-states for possible states.\nReturns the reduced deployment view for anonymous (`vcn_`) callers. Pool-team details are withheld.", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "type": "boolean", "enum": [ false, true ] }, "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 }, "aliasWarning": { "nullable": true, "properties": { "action": { "type": "string" }, "code": { "type": "string" }, "link": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "duration": { "properties": { "endTime": { "type": "number", "description": "Unix timestamp in milliseconds when the build container exited." }, "endTimeCapped": { "type": "number", "description": "Build-container exit Unix timestamp in milliseconds, capped at 45 minutes after `startTime`." }, "startTime": { "type": "number", "description": "Unix timestamp in milliseconds when the deployment entered BUILDING." }, "timeForBilling": { "type": "number", "description": "Billable build-container duration in milliseconds, capped at 45 minutes, rounded up to a whole minute, with a one-minute minimum." }, "timeToContainerExit": { "type": "number", "description": "Milliseconds from entering BUILDING until the build container exited, without the billing cap." }, "timeToContainerExitCapped": { "type": "number", "description": "Build-container duration in milliseconds, capped at 45 minutes and without billing rounding." }, "timeToReady": { "type": "number", "description": "Milliseconds from entering BUILDING until the deployment reached its current ready state." } }, "type": "object" }, "errorCode": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "readyState": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "target": { "nullable": true, "type": "string", "enum": [ "production", "staging", 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 } }, "required": [ "aliasAssigned", "duration", "id", "readyState" ], "type": "object", "description": "Returns the reduced deployment view for anonymous (`vcn_`) callers. Pool-team details are withheld." }, { "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 }, "aliasAssignedAt": { "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", "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" }, "aliasWarning": { "nullable": true, "properties": { "action": { "type": "string" }, "code": { "type": "string" }, "link": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "alwaysRefuseToBuild": { "type": "boolean", "enum": [ false, true ] }, "atproto": { "oneOf": [ { "properties": { "enabled": { "type": "boolean", "enum": [ false ] } }, "required": [ "enabled" ], "type": "object" }, { "properties": { "enabled": { "type": "boolean", "enum": [ true ] }, "subscription": { "properties": { "collections": { "items": { "type": "string" }, "type": "array" }, "dids": { "items": { "type": "string" }, "type": "array" }, "kinds": { "items": { "type": "string", "enum": [ "account", "commit", "identity", "sync" ] }, "type": "array" }, "path": { "type": "string" } }, "required": [ "collections", "path" ], "type": "object" } }, "required": [ "enabled", "subscription" ], "type": "object" } ] }, "attribution": { "properties": { "commitMeta": { "properties": { "email": { "type": "string", "description": "Email from git commit author" }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Whether the commit was signed/verified (GitHub only, others return undefined)" }, "name": { "type": "string", "description": "Name from git commit author" } }, "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" }, "provider": { "type": "string", "description": "The git provider (github, gitlab, bitbucket)" }, "type": { "type": "string", "description": "User type" } }, "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" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Team roles at time of deployment" }, "username": { "type": "string", "description": "Vercel username" } }, "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." }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "description": "applies to custom domains only, defaults to `true`" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "bootedAt": { "type": "number" }, "build": { "properties": { "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "env" ], "type": "object" }, "buildArtifactUrls": { "items": { "type": "string" }, "type": "array" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildErrorAt": { "type": "number" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "config": { "additionalProperties": true, "type": "object" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "canceledAt": { "type": "number" }, "checks": { "properties": { "deployment-alias": { "properties": { "completedAt": { "type": "number" }, "startedAt": { "type": "number" }, "state": { "type": "string", "enum": [ "failed", "pending", "succeeded" ] } }, "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" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "config": { "properties": { "functionMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionTimeout": { "nullable": true, "type": "number" }, "functionType": { "type": "string", "enum": [ "fluid", "standard" ] }, "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": [ "PROJECT_SETTING", "SKIP_QUEUE", "TEAM_SETTING" ], "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": [ "basic", "enhanced", "standard", "turbo", null ], "description": "Machine type that was used for the build." } }, "type": "object" } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." }, "secureComputeFallbackRegion": { "nullable": true, "type": "string" }, "secureComputePrimaryRegion": { "nullable": true, "type": "string" }, "version": { "type": "number" } }, "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" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "type": "string" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "createdIn": { "type": "string" }, "creator": { "properties": { "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" }, "type": { "type": "string", "enum": [ "app", "integration", "system", "user" ], "description": "Principal type of the deployment creator." }, "uid": { "type": "string", "description": "Stable creator id across principal types (user id, app id, integration configuration id, or `system`).", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "crons": { "items": { "properties": { "path": { "type": "string" }, "schedule": { "type": "string" } }, "required": [ "path", "schedule" ], "type": "object" }, "type": "array" }, "customEnvironment": { "oneOf": [ { "properties": { "branchMatcher": { "properties": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "domains": { "items": { "properties": { "apexName": { "type": "string" }, "createdAt": { "type": "number" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "gitBranch": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "updatedAt": { "type": "number" }, "verification": { "items": { "properties": { "domain": { "type": "string" }, "reason": { "type": "string" }, "type": { "type": "string" }, "value": { "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`." }, "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", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "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": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "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." } ] }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "deletedAt": { "nullable": true, "type": "number", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "duration": { "properties": { "endTime": { "type": "number", "description": "Unix timestamp in milliseconds when the build container exited." }, "endTimeCapped": { "type": "number", "description": "Build-container exit Unix timestamp in milliseconds, capped at 45 minutes after `startTime`." }, "startTime": { "type": "number", "description": "Unix timestamp in milliseconds when the deployment entered BUILDING." }, "timeForBilling": { "type": "number", "description": "Billable build-container duration in milliseconds, capped at 45 minutes, rounded up to a whole minute, with a one-minute minimum." }, "timeToContainerExit": { "type": "number", "description": "Milliseconds from entering BUILDING until the build container exited, without the billing cap." }, "timeToContainerExitCapped": { "type": "number", "description": "Build-container duration in milliseconds, capped at 45 minutes and without billing rounding." }, "timeToReady": { "type": "number", "description": "Milliseconds from entering BUILDING until the deployment reached its current ready state." } }, "type": "object" }, "env": { "items": { "type": "string" }, "type": "array" }, "errorCode": { "type": "string" }, "errorLink": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" }, "errorStep": { "type": "string" }, "flags": { "oneOf": [ { "properties": { "definitions": { "additionalProperties": { "properties": { "description": { "type": "string" }, "options": { "items": { "properties": { "label": { "type": "string" }, "value": { "$ref": "#/components/schemas/FlagJSONValue" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "url": { "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." } ] }, "functions": { "nullable": true, "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "gitRepo": { "nullable": true, "oneOf": [ { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "projectId": { "type": "number" }, "type": { "type": "string", "enum": [ "gitlab" ] }, "url": { "type": "string" } }, "required": [ "defaultBranch", "name", "namespace", "ownerType", "path", "private", "projectId", "type", "url" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "org": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "repoOwnerId": { "type": "number" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "repoId", "repoOwnerId", "type" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repoUuid": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repoUuid", "slug", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "org": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "type" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string", "description": "Owner (namespace) slug." }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "type": { "type": "string", "enum": [ "cursor-origin" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repo", "repoId", "type" ], "type": "object" } ] }, "gitSource": { "oneOf": [ { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "projectId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" } }, "required": [ "repoUuid", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] } }, "required": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "commitMetadata": { "properties": { "author": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "committer": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "message": { "type": "string" } }, "required": [ "author", "committer", "message" ], "type": "object" }, "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "repoPushedAt": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] } }, "required": [ "repoId", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug." }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "cursor-origin" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "gitUrl": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "custom" ] } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "number" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "projectId", "ref", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "ref": { "type": "string" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" } }, "required": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "commitMetadata": { "properties": { "author": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "committer": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "message": { "type": "string" } }, "required": [ "author", "committer", "message" ], "type": "object" }, "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "repoPushedAt": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "cursor-origin" ] } }, "required": [ "owner", "ref", "repo", "repoId", "sha", "type" ], "type": "object" } ] }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "images": { "properties": { "contentDispositionType": { "type": "string", "enum": [ "attachment", "inline" ] }, "contentSecurityPolicy": { "type": "string" }, "dangerouslyAllowSVG": { "type": "boolean", "enum": [ false, true ] }, "domains": { "items": { "type": "string" }, "type": "array" }, "formats": { "items": { "type": "string", "enum": [ "image/avif", "image/webp" ] }, "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" }, "qualities": { "items": { "type": "number" }, "type": "array" }, "remotePatterns": { "items": { "properties": { "hostname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single subdomain. Double `**` matches any number of subdomains." }, "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "port": { "type": "string", "description": "Can be literal port such as `8080` or empty string meaning no port." }, "protocol": { "type": "string", "enum": [ "http", "https" ], "description": "Must be `http` or `https`." }, "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" }, "sizes": { "items": { "type": "number" }, "type": "array" } }, "type": "object" }, "initReadyAt": { "type": "number" }, "inspectorUrl": { "nullable": true, "type": "string" }, "integrations": { "properties": { "claimedAt": { "type": "number" }, "completedAt": { "type": "number" }, "skippedAt": { "type": "number" }, "skippedBy": { "type": "string" }, "startedAt": { "type": "number" }, "status": { "type": "string", "enum": [ "error", "pending", "ready", "skipped", "timeout" ] } }, "required": [ "startedAt", "status" ], "type": "object" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "isInConcurrentBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "isInstantStatic": { "type": "boolean", "enum": [ false, true ], "description": "Whether this deployment completed through the instant static fast path." }, "isInSystemBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "createdAt": { "type": "number" }, "entrypoint": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "functionName": { "type": "string" }, "path": { "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" }, "manualProvisioning": { "properties": { "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" }, "state": { "type": "string", "enum": [ "COMPLETE", "PENDING", "TIMEOUT" ], "description": "Current provisioning state" } }, "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" }, "microfrontends": { "oneOf": [ { "properties": { "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." }, "isDefaultApp": { "type": "boolean", "enum": [ false ] } }, "required": [ "defaultAppProjectName", "groupIds" ], "type": "object" }, { "properties": { "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." }, "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "mfeConfigUploadState": { "type": "string", "enum": [ "no_config", "success", "waiting_on_build" ], "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." } }, "required": [ "defaultAppProjectName", "groupIds", "isDefaultApp" ], "type": "object" } ] }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ], "description": "If set it overrides the `projectSettings.nodeVersion` for this deployment." }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "originCacheRegion": { "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)" }, "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" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "platform": { "properties": { "creator": { "properties": { "avatar": { "type": "string", "description": "URL of the platform user's avatar image." }, "name": { "type": "string", "description": "Display name of the platform user." } }, "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." }, "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." }, "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)." } }, "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)" }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "project": { "properties": { "framework": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "projectId": { "type": "string" }, "projectSettings": { "properties": { "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "factory-eve", "fastapi", "fasthtml", "fastify", "flask", "gatsby", "go", "gridsome", "h3", "hexo", "hono", "hugo", "hydrogen", "ionic-angular", "ionic-react", "jekyll", "koa", "mastra", "middleman", "nestjs", "nextjs", "nitro", "node", "nuxtjs", "parcel", "polymer", "preact", "python", "react-router", "redwoodjs", "remix", "ruby", "rust", "saber", "sanity", "sanity-v2", "sapper", "scully", "services", "solidstart", "solidstart-1", "stencil", "storybook", "svelte", "sveltekit", "sveltekit-1", "tanstack-start", "tanstack-start-lovable", "umijs", "vite", "vitepress", "vue", "vuepress", "xmcp", "zola", null ] }, "installCommand": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "outputDirectory": { "nullable": true, "type": "string" }, "speedInsights": { "properties": { "canceledAt": { "type": "number" }, "dataReceivedAt": { "type": "number", "description": "When the first free (not Speed Insights Plus) production data point was observed, in ms. Set once by subscriber-analytics-events; projects that already had data before this field shipped get it backfilled on their next batch, so it reads \"first free data point observed\", not necessarily \"first ever\"." }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "webAnalytics": { "properties": { "canceledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] }, "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "type": "object" }, "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" }, "readyState": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "readyStateReason": { "type": "string" }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ], "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" ] }, "resourceConfig": { "properties": { "buildMachine": { "properties": { "cores": { "type": "number", "description": "Number of cores the build machine ran with. Set at dispatch time once the build lands on a hive." }, "defaultPurchaseType": { "type": "string", "enum": [ "basic", "enhanced", "none", "standard" ], "description": "The build machine tier included with the customer's plan. For most customers this is standard; enhanced entitlements include enhanced, while `none` means every build is billed at its purchase type." }, "machineSelectionType": { "type": "string", "enum": [ "elastic", "fixed" ], "description": "Whether the build ran on a fixed or elastic machine. Used to drive billing for the build." }, "memory": { "type": "number", "description": "Memory, in MiB, the build machine ran with. Set at dispatch time once the build lands on a hive." }, "purchaseType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ], "description": "Machine type which was purchased/selected for this build. `basic` is the 2vCPU tier, recorded on the deployment so the build pipeline can detect a basic build without consulting the project." }, "selectionSource": { "type": "string", "enum": [ "deployment-override", "elastic-algorithm", "plan-default", "project-setting", "team-entitlement", "team-setting" ], "description": "The setting which selected the build machine when the deployment was created. Frozen here so later project or team changes do not rewrite its history." } }, "type": "object", "description": "Build machine configuration recorded for this deployment's build. See {@link DeploymentBuildMachine}. Distinct from the team/user `resourceConfig.buildMachine`, which only carries `default`." } }, "type": "object" }, "routes": { "nullable": true, "items": { "oneOf": [ { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "continue": { "type": "boolean", "enum": [ false, true ] }, "dest": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "important": { "type": "boolean", "enum": [ false, true ] }, "locale": { "properties": { "cookie": { "type": "string" }, "redirect": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "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." }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "override": { "type": "boolean", "enum": [ false, true ] }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "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, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`)." }, "src": { "type": "string" }, "status": { "type": "number" }, "statusCode": { "type": "number" }, "transforms": { "items": { "oneOf": [ { "properties": { "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "src" ], "type": "object" }, { "properties": { "dest": { "type": "string" }, "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" }, { "properties": { "continue": { "type": "boolean", "enum": [ false, true ] }, "middleware": { "type": "number", "enum": [ 0 ] }, "src": { "type": "string" } }, "required": [ "continue", "middleware", "src" ], "type": "object" } ] }, "type": "array" }, "seatBlock": { "properties": { "blockCode": { "type": "string", "enum": [ "COMMIT_AUTHOR_REQUIRED", "TEAM_ACCESS_REQUIRED" ], "description": "The NSNB decision code for the seat block. TODO: We should consolidate block types." }, "gitProvider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ], "description": "The git provider type associated with gitUserId." }, "gitUserId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "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." }, "userId": { "type": "string", "description": "The blocked vercel user ID." } }, "required": [ "blockCode" ], "type": "object", "description": "NSNB Blocked metadata" }, "services": { "items": { "oneOf": [ { "properties": { "buildCommand": { "type": "string" }, "builder": { "properties": { "config": { "properties": { "buildCommand": { "type": "string" }, "buildpack": { "type": "string", "description": "Buildpack runtime slug (e.g. \"ruby\")." }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "bunVersion": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "devCommand": { "type": "string" }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "framework": { "nullable": true, "type": "string" }, "functions": { "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "installCommand": { "type": "string" }, "ldsflags": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "nodeVersion": { "type": "string" }, "outputDirectory": { "type": "string" }, "projectSettings": { "properties": { "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "framework": { "nullable": true, "type": "string" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "installCommand": { "nullable": true, "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "rust": { "type": "string" }, "scheduleFunction": { "properties": { "entrypoints": { "type": "array", "items": { "properties": { "entrypoint": { "type": "string", "description": "Runtime-specific entrypoint locator from `vercel.json`." }, "scheduleNames": { "items": { "type": "string" }, "type": "array", "description": "Names of the schedules that dispatch to this entrypoint, in config order." }, "sourceFile": { "type": "string", "description": "Project-relative source file that contains the entrypoint." } }, "required": [ "entrypoint", "scheduleNames", "sourceFile" ], "type": "object" }, "minItems": 1 }, "outputPath": { "type": "string", "description": "Function output path every schedule in this build targets." } }, "required": [ "entrypoints", "outputPath" ], "type": "object", "description": "Set when this build produces a function for schedule entrypoints." }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "entrypoint": { "type": "string" }, "env": { "additionalProperties": { "properties": { "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service-ref" ] } }, "required": [ "service", "type" ], "type": "object" }, "type": "object" }, "framework": { "type": "string" }, "group": { "type": "string" }, "handlerFunction": { "type": "string" }, "installCommand": { "type": "string" }, "name": { "type": "string" }, "preDeployCommand": { "type": "string" }, "routePrefix": { "type": "string" }, "routePrefixSource": { "type": "string", "enum": [ "configured", "generated" ] }, "runtime": { "type": "string" }, "schedule": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "schema": { "type": "string", "enum": [ "experimentalServices" ] }, "subdomain": { "type": "string" }, "topics": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "items": { "properties": { "initialDelaySeconds": { "type": "number" }, "retryAfterSeconds": { "type": "number" }, "topic": { "type": "string" } }, "required": [ "topic" ], "type": "object" }, "type": "array" } ] }, "trigger": { "type": "string", "enum": [ "queue", "schedule", "workflow" ] }, "type": { "type": "string", "enum": [ "cron", "job", "web", "worker" ] }, "workspace": { "type": "string" } }, "required": [ "builder", "name", "schema", "type", "workspace" ], "type": "object", "description": "Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime." }, { "properties": { "bindings": { "items": { "properties": { "env": { "type": "string", "description": "Environment variable name that will store the generated value" }, "format": { "type": "string", "enum": [ "url" ], "description": "Generated value shape, must be `\"url\"`." }, "service": { "type": "string", "description": "Target service name from `services`." }, "type": { "type": "string", "enum": [ "service" ], "description": "If present, must be `\"service\"` for Service-to-Service HTTP bindings." } }, "required": [ "env", "format", "service" ], "type": "object", "description": "Caller-side bindings to other services." }, "type": "array", "description": "Caller-side bindings to other services." }, "buildCommand": { "type": "string" }, "builder": { "properties": { "config": { "properties": { "buildCommand": { "type": "string" }, "buildpack": { "type": "string", "description": "Buildpack runtime slug (e.g. \"ruby\")." }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "bunVersion": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "devCommand": { "type": "string" }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "framework": { "nullable": true, "type": "string" }, "functions": { "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "installCommand": { "type": "string" }, "ldsflags": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "nodeVersion": { "type": "string" }, "outputDirectory": { "type": "string" }, "projectSettings": { "properties": { "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "framework": { "nullable": true, "type": "string" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "installCommand": { "nullable": true, "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "rust": { "type": "string" }, "scheduleFunction": { "properties": { "entrypoints": { "type": "array", "items": { "properties": { "entrypoint": { "type": "string", "description": "Runtime-specific entrypoint locator from `vercel.json`." }, "scheduleNames": { "items": { "type": "string" }, "type": "array", "description": "Names of the schedules that dispatch to this entrypoint, in config order." }, "sourceFile": { "type": "string", "description": "Project-relative source file that contains the entrypoint." } }, "required": [ "entrypoint", "scheduleNames", "sourceFile" ], "type": "object" }, "minItems": 1 }, "outputPath": { "type": "string", "description": "Function output path every schedule in this build targets." } }, "required": [ "entrypoints", "outputPath" ], "type": "object", "description": "Set when this build produces a function for schedule entrypoints." }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object", "description": "Builder selected by the resolver." }, "cleanUrls": { "type": "boolean", "enum": [ false, true ] }, "command": { "items": { "type": "string" }, "type": "array", "description": "Command override for `runtime: \"container\"` services." }, "devCommand": { "type": "string" }, "entrypoint": { "type": "string", "description": "Resolved entrypoint, relative to the service root." }, "framework": { "type": "string" }, "functions": { "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "Function configuration scoped to this service." }, "type": "object", "description": "Function configuration scoped to this service." }, "headers": { "items": { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "items": { "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "source": { "type": "string" } }, "required": [ "headers", "source" ], "type": "object" }, "type": "array" }, "ignoreCommand": { "type": "string" }, "installCommand": { "type": "string" }, "name": { "type": "string" }, "outputDirectory": { "type": "string" }, "redirects": { "items": { "properties": { "destination": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "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" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "source": { "type": "string" }, "statusCode": { "type": "number" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "rewrites": { "items": { "properties": { "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "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" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "source": { "type": "string" }, "statusCode": { "type": "number" }, "transforms": { "items": { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" }, "type": "array" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "root": { "type": "string", "description": "Path to the service root, relative to the project root." }, "routes": { "items": { "oneOf": [ { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "continue": { "type": "boolean", "enum": [ false, true ] }, "dest": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "important": { "type": "boolean", "enum": [ false, true ] }, "locale": { "properties": { "cookie": { "type": "string" }, "redirect": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "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." }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "override": { "type": "boolean", "enum": [ false, true ] }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "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, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`)." }, "src": { "type": "string" }, "status": { "type": "number" }, "statusCode": { "type": "number" }, "transforms": { "items": { "oneOf": [ { "properties": { "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "src" ], "type": "object" }, { "properties": { "dest": { "type": "string" }, "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" } ] }, "type": "array" }, "runtime": { "type": "string" }, "schema": { "type": "string", "enum": [ "experimentalServicesV2" ] }, "trailingSlash": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "builder", "name", "root", "schema" ], "type": "object", "description": "Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime." } ] }, "type": "array", "description": "Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime." }, "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", "drop", "git", "git-deploy-hook", "import", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it.", "example": "cli" }, "status": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "target": { "nullable": true, "type": "string", "enum": [ "production", "staging", 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 }, "team": { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object", "description": "The team that owns the deployment if any" }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "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" }, "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" ] }, "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 } }, "required": [ "aliasAssigned", "bootedAt", "build", "buildSkipped", "buildingAt", "createdAt", "createdIn", "creator", "duration", "env", "id", "inspectorUrl", "isInConcurrentBuildsQueue", "isInSystemBuildsQueue", "meta", "name", "ownerId", "plan", "projectId", "projectSettings", "public", "readyState", "regions", "routes", "status", "type", "url", "version" ], "type": "object", "description": "Returns the newly created deployment object. Poll `readyState` to track build progress. See https://vercel.com/docs/deployments/deployment-states for possible states." } ] } } } }, "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" }, "410": { "description": "" }, "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. Set to `1` to bypass deployment deduplication and always trigger a fresh build.", "in": "query", "schema": { "description": "Forces a new deployment even if there is a previous similar deployment. Set to `1` to bypass deployment deduplication and always trigger a fresh build.", "enum": [ "0", "1" ], "example": "1" } }, { "name": "skipAutoDetectionConfirmation", "description": "Set to `1` to skip framework auto-detection and proceed without confirmation. By default, if Vercel detects a framework that differs from the project setting, the API returns a `400` asking you to confirm. Use this to suppress that check in automated pipelines.", "in": "query", "schema": { "description": "Set to `1` to skip framework auto-detection and proceed without confirmation. By default, if Vercel detects a framework that differs from the project setting, the API returns a `400` asking you to confirm. Use this to suppress that check in automated pipelines.", "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" } } ], "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": false, "properties": { "buildMachine": { "description": "Selects a custom build machine for this deployment without changing project settings.", "enum": [ "turbo" ], "type": "string" }, "customEnvironmentSlugOrId": { "description": "The slug or ID of a custom environment to deploy to, overriding the default target environment. When omitted, the deployment targets the environment inferred from the branch (production or preview).", "type": "string", "example": "staging" }, "deploymentId": { "description": "The ID of an existing deployment to redeploy. All project settings and environment variables are inherited from the original unless explicitly overridden in this request. The redeployment gets a new ID, URL, and build.", "type": "string", "example": "dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6" }, "files": { "description": "The files to include in the deployment. Each entry is either an inlined file (with `data` and `encoding`) or a reference to a previously uploaded file (with `sha` and `size`). Required for non-git deployments. Cannot be used together with `gitSource`.", "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" }, "gitAccessToken": { "description": "Available only to Vercel platform accounts. A read-only GitHub access token scoped to the requested repository. Use a token with a lifetime of 24 hours or less that remains valid until source retrieval completes.", "maxLength": 1024, "type": "string", "writeOnly": true }, "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" }, "rootDirectory": { "type": "string", "description": "Path of the deployed directory relative to the detected git repository root. Empty string when deploying from the repository root.", "example": "apps/web" } } }, "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" }, "repoId": { "description": "The stable Vercel Git repository ID.", "type": "string", "example": 123456789 }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" } }, "required": [ "type", "sha", "repoId" ], "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" }, { "description": "Deploys from the Cursor Origin repository linked to the target project. The repository ID must match the linked repository; Vercel resolves the owner and repository name from the project link.", "properties": { "owner": { "description": "The Origin workspace slug. Optional because Vercel resolves it from the linked project.", "type": "string", "example": "bitbucket_user" }, "ref": { "description": "The branch or Git reference to deploy.", "type": "string", "example": "main" }, "repo": { "description": "The Origin repository name. Optional because Vercel resolves it from the linked project.", "type": "string", "example": "next.js" }, "repoId": { "description": "The stable Origin repository ID. Read it from the `link.repoId` field returned by the project API.", "type": "string", "example": 123456789 }, "sha": { "description": "The commit SHA to deploy. When omitted, Vercel resolves the latest commit on `ref`.", "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "cursor-origin" ], "type": "string" } }, "required": [ "type", "ref", "repoId" ], "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. For deployments created with a Cursor Origin `gitSource`, Vercel automatically adds `cursorOriginDeployment`, `cursorOriginCommitSha`, `cursorOriginCommitRef`, `cursorOriginCommitMessage`, `cursorOriginCommitAuthorName`, `cursorOriginCommitAuthorEmail` when available, `cursorOriginOwner`, `cursorOriginRepo`, `cursorOriginRepoId`, and `cursorOriginPrId` for pull request deployments.", "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, "services", "container", "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", "tanstack-start-lovable", "vitepress", "vuepress", "parcel", "fastapi", "flask", "fasthtml", "django", "ash", "factory-eve", "eve", "sanity", "sanity-v2", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "bun", "node", "go", "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 forceNew: \"1\",\n skipAutoDetectionConfirmation: \"1\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n requestBody: {\n customEnvironmentSlugOrId: \"staging\",\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 rootDirectory: \"apps/web\",\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": "Cancels a deployment that is currently in progress, stopping the build before it completes. Use this to recover quickly from accidental deploys, wrong-branch pushes, or builds with known errors — without waiting for them to finish. Returns 400 if the deployment is no longer cancelable (already `READY`, `ERROR`, or `CANCELED`). Returns the updated deployment object with `readyState: 'CANCELED'` on success.", "operationId": "cancelDeployment", "security": [ { "bearerToken": [] } ], "summary": "Cancel a deployment", "tags": [ "deployments" ], "responses": { "200": { "description": "Returns the updated deployment object with `readyState` set to `CANCELED`. The build has been stopped and this action is irreversible.", "content": { "application/json": { "schema": { "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 }, "aliasAssignedAt": { "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", "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" }, "aliasWarning": { "nullable": true, "properties": { "action": { "type": "string" }, "code": { "type": "string" }, "link": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "alwaysRefuseToBuild": { "type": "boolean", "enum": [ false, true ] }, "atproto": { "oneOf": [ { "properties": { "enabled": { "type": "boolean", "enum": [ false ] } }, "required": [ "enabled" ], "type": "object" }, { "properties": { "enabled": { "type": "boolean", "enum": [ true ] }, "subscription": { "properties": { "collections": { "items": { "type": "string" }, "type": "array" }, "dids": { "items": { "type": "string" }, "type": "array" }, "kinds": { "items": { "type": "string", "enum": [ "account", "commit", "identity", "sync" ] }, "type": "array" }, "path": { "type": "string" } }, "required": [ "collections", "path" ], "type": "object" } }, "required": [ "enabled", "subscription" ], "type": "object" } ] }, "attribution": { "properties": { "commitMeta": { "properties": { "email": { "type": "string", "description": "Email from git commit author" }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Whether the commit was signed/verified (GitHub only, others return undefined)" }, "name": { "type": "string", "description": "Name from git commit author" } }, "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" }, "provider": { "type": "string", "description": "The git provider (github, gitlab, bitbucket)" }, "type": { "type": "string", "description": "User type" } }, "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" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Team roles at time of deployment" }, "username": { "type": "string", "description": "Vercel username" } }, "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." }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "description": "applies to custom domains only, defaults to `true`" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "bootedAt": { "type": "number" }, "build": { "properties": { "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "env" ], "type": "object" }, "buildArtifactUrls": { "items": { "type": "string" }, "type": "array" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildErrorAt": { "type": "number" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "config": { "additionalProperties": true, "type": "object" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "canceledAt": { "type": "number" }, "checks": { "properties": { "deployment-alias": { "properties": { "completedAt": { "type": "number" }, "startedAt": { "type": "number" }, "state": { "type": "string", "enum": [ "failed", "pending", "succeeded" ] } }, "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" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "config": { "properties": { "functionMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionTimeout": { "nullable": true, "type": "number" }, "functionType": { "type": "string", "enum": [ "fluid", "standard" ] }, "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": [ "PROJECT_SETTING", "SKIP_QUEUE", "TEAM_SETTING" ], "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": [ "basic", "enhanced", "standard", "turbo", null ], "description": "Machine type that was used for the build." } }, "type": "object" } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." }, "secureComputeFallbackRegion": { "nullable": true, "type": "string" }, "secureComputePrimaryRegion": { "nullable": true, "type": "string" }, "version": { "type": "number" } }, "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" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "type": "string" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "createdIn": { "type": "string" }, "creator": { "properties": { "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" }, "type": { "type": "string", "enum": [ "app", "integration", "system", "user" ], "description": "Principal type of the deployment creator." }, "uid": { "type": "string", "description": "Stable creator id across principal types (user id, app id, integration configuration id, or `system`).", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "crons": { "items": { "properties": { "path": { "type": "string" }, "schedule": { "type": "string" } }, "required": [ "path", "schedule" ], "type": "object" }, "type": "array" }, "customEnvironment": { "oneOf": [ { "properties": { "branchMatcher": { "properties": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "domains": { "items": { "properties": { "apexName": { "type": "string" }, "createdAt": { "type": "number" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "gitBranch": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "updatedAt": { "type": "number" }, "verification": { "items": { "properties": { "domain": { "type": "string" }, "reason": { "type": "string" }, "type": { "type": "string" }, "value": { "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`." }, "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", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "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": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "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." } ] }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "deletedAt": { "nullable": true, "type": "number", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "duration": { "properties": { "endTime": { "type": "number", "description": "Unix timestamp in milliseconds when the build container exited." }, "endTimeCapped": { "type": "number", "description": "Build-container exit Unix timestamp in milliseconds, capped at 45 minutes after `startTime`." }, "startTime": { "type": "number", "description": "Unix timestamp in milliseconds when the deployment entered BUILDING." }, "timeForBilling": { "type": "number", "description": "Billable build-container duration in milliseconds, capped at 45 minutes, rounded up to a whole minute, with a one-minute minimum." }, "timeToContainerExit": { "type": "number", "description": "Milliseconds from entering BUILDING until the build container exited, without the billing cap." }, "timeToContainerExitCapped": { "type": "number", "description": "Build-container duration in milliseconds, capped at 45 minutes and without billing rounding." }, "timeToReady": { "type": "number", "description": "Milliseconds from entering BUILDING until the deployment reached its current ready state." } }, "type": "object" }, "env": { "items": { "type": "string" }, "type": "array" }, "errorCode": { "type": "string" }, "errorLink": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" }, "errorStep": { "type": "string" }, "flags": { "oneOf": [ { "properties": { "definitions": { "additionalProperties": { "properties": { "description": { "type": "string" }, "options": { "items": { "properties": { "label": { "type": "string" }, "value": { "$ref": "#/components/schemas/FlagJSONValue" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "url": { "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." } ] }, "functions": { "nullable": true, "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "gitRepo": { "nullable": true, "oneOf": [ { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "projectId": { "type": "number" }, "type": { "type": "string", "enum": [ "gitlab" ] }, "url": { "type": "string" } }, "required": [ "defaultBranch", "name", "namespace", "ownerType", "path", "private", "projectId", "type", "url" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "org": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "repoOwnerId": { "type": "number" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "repoId", "repoOwnerId", "type" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repoUuid": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repoUuid", "slug", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "org": { "type": "string" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "type" ], "type": "object" }, { "properties": { "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string", "description": "Owner (namespace) slug." }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "path": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "type": { "type": "string", "enum": [ "cursor-origin" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repo", "repoId", "type" ], "type": "object" } ] }, "gitSource": { "oneOf": [ { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "projectId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" } }, "required": [ "repoUuid", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] } }, "required": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "commitMetadata": { "properties": { "author": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "committer": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "message": { "type": "string" } }, "required": [ "author", "committer", "message" ], "type": "object" }, "org": { "type": "string" }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "repoPushedAt": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] } }, "required": [ "repoId", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug." }, "prId": { "nullable": true, "type": "number" }, "ref": { "nullable": true, "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "cursor-origin" ] } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "gitUrl": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "custom" ] } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github" ] } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "host": { "type": "string" }, "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-custom-host" ] } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "github-limited" ] } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "number" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "projectId", "ref", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "ref": { "type": "string" }, "repoUuid": { "type": "string" }, "sha": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" } }, "required": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "commitMetadata": { "properties": { "author": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "committer": { "properties": { "date": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "date", "email", "name" ], "type": "object" }, "message": { "type": "string" } }, "required": [ "author", "committer", "message" ], "type": "object" }, "org": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "repoPushedAt": { "type": "number" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "ref": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sha": { "type": "string" }, "type": { "type": "string", "enum": [ "cursor-origin" ] } }, "required": [ "owner", "ref", "repo", "repoId", "sha", "type" ], "type": "object" } ] }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "images": { "properties": { "contentDispositionType": { "type": "string", "enum": [ "attachment", "inline" ] }, "contentSecurityPolicy": { "type": "string" }, "dangerouslyAllowSVG": { "type": "boolean", "enum": [ false, true ] }, "domains": { "items": { "type": "string" }, "type": "array" }, "formats": { "items": { "type": "string", "enum": [ "image/avif", "image/webp" ] }, "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" }, "qualities": { "items": { "type": "number" }, "type": "array" }, "remotePatterns": { "items": { "properties": { "hostname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single subdomain. Double `**` matches any number of subdomains." }, "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "port": { "type": "string", "description": "Can be literal port such as `8080` or empty string meaning no port." }, "protocol": { "type": "string", "enum": [ "http", "https" ], "description": "Must be `http` or `https`." }, "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" }, "sizes": { "items": { "type": "number" }, "type": "array" } }, "type": "object" }, "initReadyAt": { "type": "number" }, "inspectorUrl": { "nullable": true, "type": "string" }, "integrations": { "properties": { "claimedAt": { "type": "number" }, "completedAt": { "type": "number" }, "skippedAt": { "type": "number" }, "skippedBy": { "type": "string" }, "startedAt": { "type": "number" }, "status": { "type": "string", "enum": [ "error", "pending", "ready", "skipped", "timeout" ] } }, "required": [ "startedAt", "status" ], "type": "object" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "isInConcurrentBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "isInstantStatic": { "type": "boolean", "enum": [ false, true ], "description": "Whether this deployment completed through the instant static fast path." }, "isInSystemBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "createdAt": { "type": "number" }, "entrypoint": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "functionName": { "type": "string" }, "path": { "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" }, "manualProvisioning": { "properties": { "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" }, "state": { "type": "string", "enum": [ "COMPLETE", "PENDING", "TIMEOUT" ], "description": "Current provisioning state" } }, "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" }, "microfrontends": { "oneOf": [ { "properties": { "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." }, "isDefaultApp": { "type": "boolean", "enum": [ false ] } }, "required": [ "defaultAppProjectName", "groupIds" ], "type": "object" }, { "properties": { "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." }, "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "mfeConfigUploadState": { "type": "string", "enum": [ "no_config", "success", "waiting_on_build" ], "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." } }, "required": [ "defaultAppProjectName", "groupIds", "isDefaultApp" ], "type": "object" } ] }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ], "description": "If set it overrides the `projectSettings.nodeVersion` for this deployment." }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "originCacheRegion": { "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)" }, "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" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "platform": { "properties": { "creator": { "properties": { "avatar": { "type": "string", "description": "URL of the platform user's avatar image." }, "name": { "type": "string", "description": "Display name of the platform user." } }, "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." }, "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." }, "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)." } }, "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)" }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "project": { "properties": { "framework": { "nullable": true, "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "projectId": { "type": "string" }, "projectSettings": { "properties": { "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "factory-eve", "fastapi", "fasthtml", "fastify", "flask", "gatsby", "go", "gridsome", "h3", "hexo", "hono", "hugo", "hydrogen", "ionic-angular", "ionic-react", "jekyll", "koa", "mastra", "middleman", "nestjs", "nextjs", "nitro", "node", "nuxtjs", "parcel", "polymer", "preact", "python", "react-router", "redwoodjs", "remix", "ruby", "rust", "saber", "sanity", "sanity-v2", "sapper", "scully", "services", "solidstart", "solidstart-1", "stencil", "storybook", "svelte", "sveltekit", "sveltekit-1", "tanstack-start", "tanstack-start-lovable", "umijs", "vite", "vitepress", "vue", "vuepress", "xmcp", "zola", null ] }, "installCommand": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "outputDirectory": { "nullable": true, "type": "string" }, "speedInsights": { "properties": { "canceledAt": { "type": "number" }, "dataReceivedAt": { "type": "number", "description": "When the first free (not Speed Insights Plus) production data point was observed, in ms. Set once by subscriber-analytics-events; projects that already had data before this field shipped get it backfilled on their next batch, so it reads \"first free data point observed\", not necessarily \"first ever\"." }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "webAnalytics": { "properties": { "canceledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] }, "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "type": "object" }, "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" }, "readyState": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ], "description": "The state of the deployment depending on the process of deploying, or if it is ready or in an error state", "example": "READY" }, "readyStateReason": { "type": "string" }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ], "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" ] }, "resourceConfig": { "properties": { "buildMachine": { "properties": { "cores": { "type": "number", "description": "Number of cores the build machine ran with. Set at dispatch time once the build lands on a hive." }, "defaultPurchaseType": { "type": "string", "enum": [ "basic", "enhanced", "none", "standard" ], "description": "The build machine tier included with the customer's plan. For most customers this is standard; enhanced entitlements include enhanced, while `none` means every build is billed at its purchase type." }, "machineSelectionType": { "type": "string", "enum": [ "elastic", "fixed" ], "description": "Whether the build ran on a fixed or elastic machine. Used to drive billing for the build." }, "memory": { "type": "number", "description": "Memory, in MiB, the build machine ran with. Set at dispatch time once the build lands on a hive." }, "purchaseType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ], "description": "Machine type which was purchased/selected for this build. `basic` is the 2vCPU tier, recorded on the deployment so the build pipeline can detect a basic build without consulting the project." }, "selectionSource": { "type": "string", "enum": [ "deployment-override", "elastic-algorithm", "plan-default", "project-setting", "team-entitlement", "team-setting" ], "description": "The setting which selected the build machine when the deployment was created. Frozen here so later project or team changes do not rewrite its history." } }, "type": "object", "description": "Build machine configuration recorded for this deployment's build. See {@link DeploymentBuildMachine}. Distinct from the team/user `resourceConfig.buildMachine`, which only carries `default`." } }, "type": "object" }, "routes": { "nullable": true, "items": { "oneOf": [ { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "continue": { "type": "boolean", "enum": [ false, true ] }, "dest": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "important": { "type": "boolean", "enum": [ false, true ] }, "locale": { "properties": { "cookie": { "type": "string" }, "redirect": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "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." }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "override": { "type": "boolean", "enum": [ false, true ] }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "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, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`)." }, "src": { "type": "string" }, "status": { "type": "number" }, "statusCode": { "type": "number" }, "transforms": { "items": { "oneOf": [ { "properties": { "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "src" ], "type": "object" }, { "properties": { "dest": { "type": "string" }, "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" }, { "properties": { "continue": { "type": "boolean", "enum": [ false, true ] }, "middleware": { "type": "number", "enum": [ 0 ] }, "src": { "type": "string" } }, "required": [ "continue", "middleware", "src" ], "type": "object" } ] }, "type": "array" }, "seatBlock": { "properties": { "blockCode": { "type": "string", "enum": [ "COMMIT_AUTHOR_REQUIRED", "TEAM_ACCESS_REQUIRED" ], "description": "The NSNB decision code for the seat block. TODO: We should consolidate block types." }, "gitProvider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ], "description": "The git provider type associated with gitUserId." }, "gitUserId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "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." }, "userId": { "type": "string", "description": "The blocked vercel user ID." } }, "required": [ "blockCode" ], "type": "object", "description": "NSNB Blocked metadata" }, "services": { "items": { "oneOf": [ { "properties": { "buildCommand": { "type": "string" }, "builder": { "properties": { "config": { "properties": { "buildCommand": { "type": "string" }, "buildpack": { "type": "string", "description": "Buildpack runtime slug (e.g. \"ruby\")." }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "bunVersion": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "devCommand": { "type": "string" }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "framework": { "nullable": true, "type": "string" }, "functions": { "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "installCommand": { "type": "string" }, "ldsflags": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "nodeVersion": { "type": "string" }, "outputDirectory": { "type": "string" }, "projectSettings": { "properties": { "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "framework": { "nullable": true, "type": "string" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "installCommand": { "nullable": true, "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "rust": { "type": "string" }, "scheduleFunction": { "properties": { "entrypoints": { "type": "array", "items": { "properties": { "entrypoint": { "type": "string", "description": "Runtime-specific entrypoint locator from `vercel.json`." }, "scheduleNames": { "items": { "type": "string" }, "type": "array", "description": "Names of the schedules that dispatch to this entrypoint, in config order." }, "sourceFile": { "type": "string", "description": "Project-relative source file that contains the entrypoint." } }, "required": [ "entrypoint", "scheduleNames", "sourceFile" ], "type": "object" }, "minItems": 1 }, "outputPath": { "type": "string", "description": "Function output path every schedule in this build targets." } }, "required": [ "entrypoints", "outputPath" ], "type": "object", "description": "Set when this build produces a function for schedule entrypoints." }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "entrypoint": { "type": "string" }, "env": { "additionalProperties": { "properties": { "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service-ref" ] } }, "required": [ "service", "type" ], "type": "object" }, "type": "object" }, "framework": { "type": "string" }, "group": { "type": "string" }, "handlerFunction": { "type": "string" }, "installCommand": { "type": "string" }, "name": { "type": "string" }, "preDeployCommand": { "type": "string" }, "routePrefix": { "type": "string" }, "routePrefixSource": { "type": "string", "enum": [ "configured", "generated" ] }, "runtime": { "type": "string" }, "schedule": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "schema": { "type": "string", "enum": [ "experimentalServices" ] }, "subdomain": { "type": "string" }, "topics": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "items": { "properties": { "initialDelaySeconds": { "type": "number" }, "retryAfterSeconds": { "type": "number" }, "topic": { "type": "string" } }, "required": [ "topic" ], "type": "object" }, "type": "array" } ] }, "trigger": { "type": "string", "enum": [ "queue", "schedule", "workflow" ] }, "type": { "type": "string", "enum": [ "cron", "job", "web", "worker" ] }, "workspace": { "type": "string" } }, "required": [ "builder", "name", "schema", "type", "workspace" ], "type": "object", "description": "Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime." }, { "properties": { "bindings": { "items": { "properties": { "env": { "type": "string", "description": "Environment variable name that will store the generated value" }, "format": { "type": "string", "enum": [ "url" ], "description": "Generated value shape, must be `\"url\"`." }, "service": { "type": "string", "description": "Target service name from `services`." }, "type": { "type": "string", "enum": [ "service" ], "description": "If present, must be `\"service\"` for Service-to-Service HTTP bindings." } }, "required": [ "env", "format", "service" ], "type": "object", "description": "Caller-side bindings to other services." }, "type": "array", "description": "Caller-side bindings to other services." }, "buildCommand": { "type": "string" }, "builder": { "properties": { "config": { "properties": { "buildCommand": { "type": "string" }, "buildpack": { "type": "string", "description": "Buildpack runtime slug (e.g. \"ruby\")." }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "bunVersion": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "devCommand": { "type": "string" }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "framework": { "nullable": true, "type": "string" }, "functions": { "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "installCommand": { "type": "string" }, "ldsflags": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "nodeVersion": { "type": "string" }, "outputDirectory": { "type": "string" }, "projectSettings": { "properties": { "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "framework": { "nullable": true, "type": "string" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "installCommand": { "nullable": true, "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "rust": { "type": "string" }, "scheduleFunction": { "properties": { "entrypoints": { "type": "array", "items": { "properties": { "entrypoint": { "type": "string", "description": "Runtime-specific entrypoint locator from `vercel.json`." }, "scheduleNames": { "items": { "type": "string" }, "type": "array", "description": "Names of the schedules that dispatch to this entrypoint, in config order." }, "sourceFile": { "type": "string", "description": "Project-relative source file that contains the entrypoint." } }, "required": [ "entrypoint", "scheduleNames", "sourceFile" ], "type": "object" }, "minItems": 1 }, "outputPath": { "type": "string", "description": "Function output path every schedule in this build targets." } }, "required": [ "entrypoints", "outputPath" ], "type": "object", "description": "Set when this build produces a function for schedule entrypoints." }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object", "description": "Builder selected by the resolver." }, "cleanUrls": { "type": "boolean", "enum": [ false, true ] }, "command": { "items": { "type": "string" }, "type": "array", "description": "Command override for `runtime: \"container\"` services." }, "devCommand": { "type": "string" }, "entrypoint": { "type": "string", "description": "Resolved entrypoint, relative to the service root." }, "framework": { "type": "string" }, "functions": { "additionalProperties": { "properties": { "affinity": { "properties": { "mode": { "type": "string", "enum": [ "strict" ] } }, "required": [ "mode" ], "type": "object" }, "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "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." }, "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." }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" } }, "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." }, { "properties": { "type": { "type": "string", "enum": [ "schedule/v1beta" ], "description": "Event type - must be \"schedule/v1beta\" (REQUIRED)" } }, "required": [ "type" ], "type": "object" } ] }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "includeFiles": { "type": "string" }, "maxConcurrency": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "memory": { "type": "number" }, "regions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "Function configuration scoped to this service." }, "type": "object", "description": "Function configuration scoped to this service." }, "headers": { "items": { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "items": { "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "source": { "type": "string" } }, "required": [ "headers", "source" ], "type": "object" }, "type": "array" }, "ignoreCommand": { "type": "string" }, "installCommand": { "type": "string" }, "name": { "type": "string" }, "outputDirectory": { "type": "string" }, "redirects": { "items": { "properties": { "destination": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "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" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "source": { "type": "string" }, "statusCode": { "type": "number" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "rewrites": { "items": { "properties": { "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "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" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "source": { "type": "string" }, "statusCode": { "type": "number" }, "transforms": { "items": { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" }, "type": "array" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "root": { "type": "string", "description": "Path to the service root, relative to the project root." }, "routes": { "items": { "oneOf": [ { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "continue": { "type": "boolean", "enum": [ false, true ] }, "dest": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "important": { "type": "boolean", "enum": [ false, true ] }, "locale": { "properties": { "cookie": { "type": "string" }, "redirect": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "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." }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "override": { "type": "boolean", "enum": [ false, true ] }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "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, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`)." }, "src": { "type": "string" }, "status": { "type": "number" }, "statusCode": { "type": "number" }, "transforms": { "items": { "oneOf": [ { "properties": { "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "src" ], "type": "object" }, { "properties": { "dest": { "type": "string" }, "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" } ] }, "type": "array" }, "runtime": { "type": "string" }, "schema": { "type": "string", "enum": [ "experimentalServicesV2" ] }, "trailingSlash": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "builder", "name", "root", "schema" ], "type": "object", "description": "Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime." } ] }, "type": "array", "description": "Services detected during build from vercel.json experimentalServices or auto-detected from project structure. Used to inject service URLs as environment variables at runtime." }, "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", "drop", "git", "git-deploy-hook", "import", "import/repo", "redeploy", "v0-web" ], "description": "Where was the deployment created from. Best-effort guess for metrics only — not authoritative; do not gate behavior on it.", "example": "cli" }, "status": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "target": { "nullable": true, "type": "string", "enum": [ "production", "staging", 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 }, "team": { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object", "description": "The team that owns the deployment if any" }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "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" }, "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" ] }, "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 } }, "required": [ "aliasAssigned", "bootedAt", "build", "buildSkipped", "buildingAt", "createdAt", "createdIn", "creator", "duration", "env", "id", "inspectorUrl", "isInConcurrentBuildsQueue", "isInSystemBuildsQueue", "meta", "name", "ownerId", "plan", "projectId", "projectSettings", "public", "readyState", "regions", "routes", "status", "type", "url", "version" ], "type": "object", "description": "Returns the updated deployment object with `readyState` set to `CANCELED`. The build has been stopped and this action is irreversible." } } } }, "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": "" } }, "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": { "comment": { "type": "string" }, "created": { "nullable": true, "type": "number" }, "createdAt": { "nullable": true, "type": "number" }, "creator": { "type": "string" }, "id": { "type": "string" }, "mxPriority": { "type": "number" }, "name": { "type": "string" }, "priority": { "type": "number" }, "slug": { "type": "string" }, "ttl": { "type": "number" }, "type": { "type": "string", "enum": [ "A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "NS", "SRV", "TXT" ] }, "updated": { "nullable": true, "type": "number" }, "updatedAt": { "nullable": true, "type": "number" }, "value": { "type": "string" } }, "required": [ "created", "createdAt", "creator", "id", "name", "slug", "type", "updated", "updatedAt", "value" ], "type": "object" }, "type": "array" } }, "required": [ "records" ], "type": "object" }, { "properties": { "pagination": { "$ref": "#/components/schemas/Pagination" }, "records": { "items": { "properties": { "comment": { "type": "string" }, "created": { "nullable": true, "type": "number" }, "createdAt": { "nullable": true, "type": "number" }, "creator": { "type": "string" }, "id": { "type": "string" }, "mxPriority": { "type": "number" }, "name": { "type": "string" }, "priority": { "type": "number" }, "slug": { "type": "string" }, "ttl": { "type": "number" }, "type": { "type": "string", "enum": [ "A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "NS", "SRV", "TXT" ] }, "updated": { "nullable": true, "type": "number" }, "updatedAt": { "nullable": true, "type": "number" }, "value": { "type": "string" } }, "required": [ "created", "createdAt", "creator", "id", "name", "slug", "type", "updated", "updatedAt", "value" ], "type": "object" }, "type": "array" } }, "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": "" }, "410": { "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": [ "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": "" }, "410": { "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": { "comment": { "type": "string" }, "createdAt": { "nullable": true, "type": "number" }, "creator": { "type": "string" }, "domain": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "recordType": { "type": "string", "enum": [ "A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "NS", "SRV", "TXT" ] }, "ttl": { "type": "number" }, "type": { "type": "string", "enum": [ "record", "record-sys" ] }, "value": { "type": "string" } }, "required": [ "creator", "domain", "id", "name", "recordType", "type", "value" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "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": "" }, "410": { "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}" } ] } }, "/domains/{domain}/records": { "put": { "description": "", "operationId": "replaceDomainsByDomainRecords", "security": [], "tags": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "recordIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "recordIds" ], "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": "" }, "410": { "description": "" }, "415": { "description": "" } }, "parameters": [ { "name": "domain", "description": "The domain name", "in": "path", "required": true, "schema": { "type": "string", "description": "The domain name", "example": "example.com" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "replaceDomainsByDomainRecords", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n const result = await vercel.replaceDomainsByDomainRecords({\n domain: \"example.com\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/domains/records/{recordId}": { "get": { "description": "", "operationId": "getDomainsRecordsByRecordId", "security": [], "tags": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "comment": { "type": "string" }, "createdAt": { "nullable": true, "type": "number" }, "creator": { "type": "string" }, "domain": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "recordType": { "type": "string", "enum": [ "A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "NS", "SRV", "TXT" ] }, "ttl": { "type": "number" }, "type": { "type": "string", "enum": [ "A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "NS", "SRV", "TXT" ] }, "value": { "type": "string" } }, "required": [ "creator", "domain", "id", "name", "recordType", "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "recordId", "description": "The unique ID of the DNS record", "in": "path", "required": true, "schema": { "type": "string", "description": "The unique ID of the DNS record" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getDomainsRecordsByRecordId", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n const result = await vercel.getDomainsRecordsByRecordId({\n recordId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": "" }, "410": { "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/domains/search": { "post": { "tags": [ "domains-registrar" ], "operationId": "searchDomains", "parameters": [ { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "results" ], "properties": { "results": { "type": "array", "items": { "anyOf": [ { "type": "object", "required": [ "domain", "available" ], "properties": { "domain": { "$ref": "#/components/schemas/DomainName" }, "available": { "type": "boolean", "enum": [ false ], "description": "`false` means the domain is unavailable or its availability could not be confirmed." } }, "additionalProperties": false }, { "type": "object", "required": [ "domain", "available", "years", "price", "renewalPrice", "premium" ], "properties": { "domain": { "$ref": "#/components/schemas/DomainName" }, "available": { "type": "boolean", "enum": [ true ] }, "years": { "type": "number" }, "price": { "type": "number" }, "renewalPrice": { "type": "number" }, "premium": { "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": "Start domain research here. Get registration availability and pricing for 1–200 exact domain names. Returns results in input order, with registration and renewal prices in USD for available domains. No authentication required.", "summary": "Get Domain Availability and Pricing", "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 200 item(s)", "title": "maxItems(200)", "maxItems": 200 } }, "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "searchDomains", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n const result = await vercel.domainsRegistrar.searchDomains({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n domains: [\n \"\",\n ],\n },\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/registrar/tlds/supported": { "get": { "tags": [ "domains-registrar" ], "operationId": "getSupportedTlds", "parameters": [ { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [], "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\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": [], "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\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": [], "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\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": [], "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\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": [], "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\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/price": { "post": { "tags": [ "domains-registrar" ], "operationId": "getBulkPrice", "parameters": [ { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "results" ], "properties": { "results": { "type": "array", "items": { "type": "object", "required": [ "domain", "years", "purchasePrice", "renewalPrice", "transferPrice" ], "properties": { "domain": { "$ref": "#/components/schemas/DomainName" }, "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 } } }, "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 multiple domains in a single request.", "summary": "Get price data 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 }, "years": { "type": "number", "description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used." } }, "additionalProperties": false } } }, "required": true }, "x-codeSamples": [ { "lang": "typescript", "label": "getBulkPrice", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getBulkPrice({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n requestBody: {\n domains: [\n \"\",\n ],\n },\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": [], "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\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}/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": [], "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\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/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": "Forbidden", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/Forbidden" }, { "$ref": "#/components/schemas/NotAuthorizedForScope" } ] } } } }, "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/EmojiTldNotSupported" }, { "$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": "Forbidden", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/Forbidden" }, { "$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": "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/EmojiTldNotSupported" }, { "$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": "Forbidden", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/Forbidden" }, { "$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": "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": "Forbidden", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/Forbidden" }, { "$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": "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": "Forbidden", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/Forbidden" }, { "$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 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": "Forbidden", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/Forbidden" }, { "$ref": "#/components/schemas/NotAuthorizedForScope" } ] } } } }, "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": "Forbidden", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/Forbidden" }, { "$ref": "#/components/schemas/NotAuthorizedForScope" } ] } } } }, "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": "Forbidden", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/Forbidden" }, { "$ref": "#/components/schemas/NotAuthorizedForScope" } ] } } } }, "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-verification": { "get": { "tags": [ "domains-registrar" ], "operationId": "getDomainContactVerification", "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": "The registrant contact has been verified.", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/ContactVerified" }, { "$ref": "#/components/schemas/ContactPendingVerification" } ] } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/BoughtTooRecently" }, { "$ref": "#/components/schemas/DomainNotRegistered" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/Forbidden" }, { "$ref": "#/components/schemas/NotAuthorizedForScope" } ] } } } }, "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": "Get the registrant contact verification status for a domain. Use this after purchasing a domain to determine whether the contact has been verified. Note that a bought_too_recently error will be returned if the domain was bought less than 30 minutes before the request.", "summary": "Get contact verification status for a domain", "x-codeSamples": [ { "lang": "typescript", "label": "getDomainContactVerification", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domainsRegistrar.getDomainContactVerification({\n domain: \"impolite-guide.org\",\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": { "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." }, "configuredBy": { "nullable": true, "type": "string", "enum": [ "A", "CNAME", "dns-01", "http", 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." }, "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." }, "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." }, "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." }, "410": { "description": "" } }, "parameters": [ { "name": "domain", "description": "The name of the domain.", "in": "path", "required": true, "schema": { "description": "The name of the domain.", "type": "string", "example": "example.com" } }, { "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}" } ] } }, "/v9/domains/{domain}/verification": { "get": { "description": "Get the TXT verification record needed to claim ownership of a domain for the authenticated team. The caller must add this TXT record to `_vercel.{domain}` in their DNS configuration, then call POST /domains/:domain/claim to complete the ownership transfer.", "operationId": "getDomainVerificationRecord", "security": [ { "bearerToken": [] } ], "summary": "Get Domain Verification Record", "tags": [ "domains" ], "responses": { "200": { "description": "Returns the TXT record needed to verify domain ownership.", "content": { "application/json": { "schema": { "properties": { "txtRecord": { "type": "string" }, "verificationDomain": { "type": "string" } }, "required": [ "txtRecord", "verificationDomain" ], "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": "" } }, "parameters": [ { "name": "domain", "description": "The domain name to get the verification record for", "in": "path", "required": true, "schema": { "description": "The domain name to get the verification record for", "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": "getDomainVerificationRecord", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domains.getDomainVerificationRecord({\n domain: \"example.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v9/domains/{domain}/claim": { "post": { "description": "Claim ownership of a domain for the authenticated team by verifying a TXT record. The caller must first add a TXT record to `_vercel.{domain}` (obtained from GET /domains/:domain/verification), then call this endpoint to complete the ownership transfer. If the TXT record is verified, the domain ownership will be transferred to the caller's team, even if the domain is currently owned by another user or team.", "operationId": "claimDomainOwnership", "security": [ { "bearerToken": [] } ], "summary": "Claim Domain Ownership", "tags": [ "domains" ], "responses": { "200": { "description": "Domain ownership successfully claimed.", "content": { "application/json": { "schema": { "properties": { "domain": { "properties": { "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 }, "creator": { "properties": { "customerId": { "nullable": true, "type": "string" }, "email": { "type": "string" }, "id": { "type": "string" }, "isDomainReseller": { "type": "boolean", "enum": [ false, true ] }, "username": { "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" } }, "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" ] }, "echMode": { "type": "string", "enum": [ "auto", "disabled", "enabled" ], "description": "Whether the domain is enrolled in Encrypted Client Hello. `auto` leaves the decision to Vercel, `enabled` always enrolls, and `disabled` never enrolls and opts out of automatic enrollment.", "example": "auto" }, "expiresAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel." }, "id": { "type": "string", "description": "The unique identifier of the domain.", "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" }, "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" ] }, "name": { "type": "string", "description": "The domain name.", "example": "example.com" }, "nameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the current nameservers of the domain.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "renew": { "type": "boolean", "enum": [ false, true ], "description": "Indicates whether the domain is set to automatically renew.", "example": true }, "serviceType": { "type": "string", "enum": [ "external", "na", "zeit.world" ], "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" }, "teamId": { "nullable": true, "type": "string" }, "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" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "If the domain has the ownership verified.", "example": true } }, "required": [ "boughtAt", "createdAt", "creator", "echMode", "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 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": "" } }, "parameters": [ { "name": "domain", "description": "The domain name to claim ownership of", "in": "path", "required": true, "schema": { "description": "The domain name to claim ownership of", "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": "claimDomainOwnership", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domains.claimDomainOwnership({\n domain: \"example.com\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/domains/{domain}/project-domains": { "get": { "description": "List all project domains associated with an apex domain owned by the authenticated account.", "operationId": "getDomainProjectDomains", "security": [ { "bearerToken": [] } ], "summary": "List Project Domains by Apex Domain", "tags": [ "domains" ], "responses": { "200": { "description": "Successful response retrieving project domains for an apex domain.", "content": { "application/json": { "schema": { "properties": { "pagination": { "$ref": "#/components/schemas/Pagination" }, "projectDomains": { "items": { "properties": { "apexName": { "type": "string" }, "createdAt": { "type": "number" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "gitBranch": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "updatedAt": { "type": "number" }, "verification": { "items": { "properties": { "domain": { "type": "string" }, "reason": { "type": "string" }, "type": { "type": "string" }, "value": { "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`." }, "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" }, "type": "array" } }, "required": [ "pagination", "projectDomains" ], "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": "" } }, "parameters": [ { "name": "domain", "description": "The apex domain name.", "in": "path", "required": true, "schema": { "description": "The apex domain name.", "type": "string", "example": "example.com" } }, { "name": "limit", "description": "Maximum number of project domains to list from a request.", "in": "query", "required": false, "schema": { "description": "Maximum number of project domains to list from a request.", "type": "number", "example": 20 } }, { "name": "since", "description": "Get project domains created after this JavaScript timestamp.", "in": "query", "required": false, "schema": { "description": "Get project domains created after this JavaScript timestamp.", "type": "number", "example": 1609499532000 } }, { "name": "until", "description": "Get project domains created before this JavaScript timestamp.", "in": "query", "required": false, "schema": { "description": "Get project 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": "getDomainProjectDomains", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.domains.getDomainProjectDomains({\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();" } ] } }, "/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": { "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 }, "creator": { "properties": { "customerId": { "nullable": true, "type": "string" }, "email": { "type": "string" }, "id": { "type": "string" }, "isDomainReseller": { "type": "boolean", "enum": [ false, true ] }, "username": { "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" } }, "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" ] }, "echMode": { "type": "string", "enum": [ "auto", "disabled", "enabled" ], "description": "Whether the domain is enrolled in Encrypted Client Hello. `auto` leaves the decision to Vercel, `enabled` always enrolls, and `disabled` never enrolls and opts out of automatic enrollment.", "example": "auto" }, "expiresAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel." }, "id": { "type": "string", "description": "The unique identifier of the domain.", "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" }, "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" ] }, "name": { "type": "string", "description": "The domain name.", "example": "example.com" }, "nameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the current nameservers of the domain.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "renew": { "type": "boolean", "enum": [ false, true ], "description": "Indicates whether the domain is set to automatically renew.", "example": true }, "serviceType": { "type": "string", "enum": [ "external", "na", "zeit.world" ], "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" }, "suffix": { "type": "boolean", "enum": [ false, true ] }, "teamId": { "nullable": true, "type": "string" }, "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" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "If the domain has the ownership verified.", "example": true } }, "required": [ "boughtAt", "createdAt", "creator", "echMode", "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": "" }, "410": { "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": { "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 }, "creator": { "properties": { "customerId": { "nullable": true, "type": "string" }, "email": { "type": "string" }, "id": { "type": "string" }, "isDomainReseller": { "type": "boolean", "enum": [ false, true ] }, "username": { "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" } }, "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" ] }, "echMode": { "type": "string", "enum": [ "auto", "disabled", "enabled" ], "description": "Whether the domain is enrolled in Encrypted Client Hello. `auto` leaves the decision to Vercel, `enabled` always enrolls, and `disabled` never enrolls and opts out of automatic enrollment.", "example": "auto" }, "expiresAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel." }, "id": { "type": "string", "description": "The unique identifier of the domain.", "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" }, "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" ] }, "name": { "type": "string", "description": "The domain name.", "example": "example.com" }, "nameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the current nameservers of the domain.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "renew": { "type": "boolean", "enum": [ false, true ], "description": "Indicates whether the domain is set to automatically renew.", "example": true }, "serviceType": { "type": "string", "enum": [ "external", "na", "zeit.world" ], "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" }, "teamId": { "nullable": true, "type": "string" }, "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" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "If the domain has the ownership verified.", "example": true } }, "required": [ "boughtAt", "createdAt", "creator", "echMode", "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": "" }, "410": { "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": { "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 }, "creator": { "properties": { "customerId": { "nullable": true, "type": "string" }, "email": { "type": "string" }, "id": { "type": "string" }, "isDomainReseller": { "type": "boolean", "enum": [ false, true ] }, "username": { "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" } }, "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" ] }, "echMode": { "type": "string", "enum": [ "auto", "disabled", "enabled" ], "description": "Whether the domain is enrolled in Encrypted Client Hello. `auto` leaves the decision to Vercel, `enabled` always enrolls, and `disabled` never enrolls and opts out of automatic enrollment.", "example": "auto" }, "expiresAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel." }, "id": { "type": "string", "description": "The unique identifier of the domain.", "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" }, "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" ] }, "name": { "type": "string", "description": "The domain name.", "example": "example.com" }, "nameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the current nameservers of the domain.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "renew": { "type": "boolean", "enum": [ false, true ], "description": "Indicates whether the domain is set to automatically renew.", "example": true }, "serviceType": { "type": "string", "enum": [ "external", "na", "zeit.world" ], "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" }, "teamId": { "nullable": true, "type": "string" }, "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" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "If the domain has the ownership verified.", "example": true } }, "required": [ "boughtAt", "createdAt", "creator", "echMode", "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" }, "410": { "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": { "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 CDN 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": { "customNameservers": { "items": { "type": "string" }, "type": "array" }, "echMode": { "type": "string", "enum": [ "auto", "disabled", "enabled" ] }, "renew": { "type": "boolean", "enum": [ false, true ] }, "zone": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "echMode" ], "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": "" }, "410": { "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" }, "echMode": { "description": "Encrypted Client Hello enrollment. 'auto' leaves it to Vercel, 'disabled' never enrolls and opts out of automatic enrollment.", "type": "string", "enum": [ "auto", "disabled" ] } } }, { "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": "" }, "410": { "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": { "clientId": { "type": "string" }, "configurationId": { "type": "string" }, "createdFrom": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationIcon": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectsMetadata": { "nullable": true, "items": { "properties": { "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "factory-eve", "fastapi", "fasthtml", "fastify", "flask", "gatsby", "go", "gridsome", "h3", "hexo", "hono", "hugo", "hydrogen", "ionic-angular", "ionic-react", "jekyll", "koa", "mastra", "middleman", "nestjs", "nextjs", "nitro", "node", "nuxtjs", "parcel", "polymer", "preact", "python", "react-router", "redwoodjs", "remix", "ruby", "rust", "saber", "sanity", "sanity-v2", "sapper", "scully", "services", "solidstart", "solidstart-1", "stencil", "storybook", "svelte", "sveltekit", "sveltekit-1", "tanstack-start", "tanstack-start-lovable", "umijs", "vite", "vitepress", "vue", "vuepress", "xmcp", "zola", null ] }, "id": { "type": "string" }, "latestDeployment": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" } }, "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": "" }, "410": { "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": "" }, "410": { "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": { "clientId": { "type": "string" }, "configurationId": { "type": "string" }, "createdFrom": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationIcon": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectsMetadata": { "nullable": true, "items": { "properties": { "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "factory-eve", "fastapi", "fasthtml", "fastify", "flask", "gatsby", "go", "gridsome", "h3", "hexo", "hono", "hugo", "hydrogen", "ionic-angular", "ionic-react", "jekyll", "koa", "mastra", "middleman", "nestjs", "nextjs", "nitro", "node", "nuxtjs", "parcel", "polymer", "preact", "python", "react-router", "redwoodjs", "remix", "ruby", "rust", "saber", "sanity", "sanity-v2", "sapper", "scully", "services", "solidstart", "solidstart-1", "stencil", "storybook", "svelte", "sveltekit", "sveltekit-1", "tanstack-start", "tanstack-start-lovable", "umijs", "vite", "vitepress", "vue", "vuepress", "xmcp", "zola", null ] }, "id": { "type": "string" }, "latestDeployment": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" } }, "required": [ "createdFrom" ] }, "type": "array" }, { "properties": { "drains": { "oneOf": [ { "items": { "properties": { "createdAt": { "type": "number" }, "delivery": { "oneOf": [ { "properties": { "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "http" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "otlphttp" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "endpoint": { "type": "string" }, "table": { "type": "string" }, "type": { "type": "string", "enum": [ "clickhouse" ] } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "compression": { "type": "string", "enum": [ "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] }, "region": { "type": "string" }, "roleArn": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ] }, "type": { "type": "string", "enum": [ "s3" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] }, "type": { "type": "string", "enum": [ "internal" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "limits-exceeded" ] }, "firstErrorTimestamp": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "sampling": { "items": { "properties": { "env": { "type": "string", "enum": [ "preview", "production" ] }, "rate": { "type": "number" }, "requestPath": { "type": "string" }, "type": { "type": "string", "enum": [ "head_sampling" ] } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "schemas": { "properties": { "ai_gateway": { "type": "object" }, "analytics": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" }, "log": { "type": "object" }, "speed_insights": { "type": "object" }, "trace": { "type": "object" } }, "type": "object" }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "teamId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "filterV2": { "properties": { "filter": { "oneOf": [ { "properties": { "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" }, "log": { "properties": { "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" } }, "type": "object" }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": { "type": "string", "enum": [ "basic" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "text": { "type": "string" }, "type": { "type": "string", "enum": [ "odata" ] } }, "required": [ "text", "type" ], "type": "object" } ] }, "version": { "type": "string", "enum": [ "v2" ] } }, "required": [ "filter", "version" ], "type": "object" } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, "type": "array" }, { "items": { "properties": { "createdAt": { "type": "number" }, "delivery": { "oneOf": [ { "properties": { "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "http" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "otlphttp" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "endpoint": { "type": "string" }, "table": { "type": "string" }, "type": { "type": "string", "enum": [ "clickhouse" ] } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "compression": { "type": "string", "enum": [ "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] }, "region": { "type": "string" }, "roleArn": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ] }, "type": { "type": "string", "enum": [ "s3" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] }, "type": { "type": "string", "enum": [ "internal" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "limits-exceeded" ] }, "firstErrorTimestamp": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "sampling": { "items": { "properties": { "env": { "type": "string", "enum": [ "preview", "production" ] }, "rate": { "type": "number" }, "requestPath": { "type": "string" }, "type": { "type": "string", "enum": [ "head_sampling" ] } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "schemas": { "properties": { "ai_gateway": { "type": "object" }, "analytics": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" }, "log": { "type": "object" }, "speed_insights": { "type": "object" }, "trace": { "type": "object" } }, "type": "object" }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "teamId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "filterV2": { "properties": { "filter": { "oneOf": [ { "properties": { "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" }, "log": { "properties": { "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" } }, "type": "object" }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": { "type": "string", "enum": [ "basic" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "text": { "type": "string" }, "type": { "type": "string", "enum": [ "odata" ] } }, "required": [ "text", "type" ], "type": "object" } ] }, "version": { "type": "string", "enum": [ "v2" ] } }, "required": [ "filter", "version" ], "type": "object" }, "integrationConfigurationUri": { "type": "string" }, "integrationIcon": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "drain", "integration" ] } }, "required": [ "access", "managedBy" ], "type": "object" }, { "properties": { "access": { "type": "string", "enum": [ "some" ] }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "managedBy": { "type": "string", "enum": [ "drain", "integration" ] } }, "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": "" }, "410": { "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." }, "404": { "description": "" }, "410": { "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": [ "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": { "createdAt": { "type": "number" }, "delivery": { "oneOf": [ { "properties": { "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "http" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "otlphttp" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "endpoint": { "type": "string" }, "table": { "type": "string" }, "type": { "type": "string", "enum": [ "clickhouse" ] } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "compression": { "type": "string", "enum": [ "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] }, "region": { "type": "string" }, "roleArn": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ] }, "type": { "type": "string", "enum": [ "s3" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] }, "type": { "type": "string", "enum": [ "internal" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "limits-exceeded" ] }, "firstErrorTimestamp": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "sampling": { "items": { "properties": { "env": { "type": "string", "enum": [ "preview", "production" ] }, "rate": { "type": "number" }, "requestPath": { "type": "string" }, "type": { "type": "string", "enum": [ "head_sampling" ] } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "schemas": { "properties": { "ai_gateway": { "type": "object" }, "analytics": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" }, "log": { "type": "object" }, "speed_insights": { "type": "object" }, "trace": { "type": "object" } }, "type": "object" }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "teamId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "filterV2": { "properties": { "filter": { "oneOf": [ { "properties": { "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" }, "log": { "properties": { "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" } }, "type": "object" }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": { "type": "string", "enum": [ "basic" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "text": { "type": "string" }, "type": { "type": "string", "enum": [ "odata" ] } }, "required": [ "text", "type" ], "type": "object" } ] }, "version": { "type": "string", "enum": [ "v2" ] } }, "required": [ "filter", "version" ], "type": "object" } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "delivery": { "oneOf": [ { "properties": { "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "http" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "otlphttp" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "endpoint": { "type": "string" }, "table": { "type": "string" }, "type": { "type": "string", "enum": [ "clickhouse" ] } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "compression": { "type": "string", "enum": [ "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] }, "region": { "type": "string" }, "roleArn": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ] }, "type": { "type": "string", "enum": [ "s3" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] }, "type": { "type": "string", "enum": [ "internal" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "limits-exceeded" ] }, "firstErrorTimestamp": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "sampling": { "items": { "properties": { "env": { "type": "string", "enum": [ "preview", "production" ] }, "rate": { "type": "number" }, "requestPath": { "type": "string" }, "type": { "type": "string", "enum": [ "head_sampling" ] } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "schemas": { "properties": { "ai_gateway": { "type": "object" }, "analytics": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" }, "log": { "type": "object" }, "speed_insights": { "type": "object" }, "trace": { "type": "object" } }, "type": "object" }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "teamId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "filterV2": { "properties": { "filter": { "oneOf": [ { "properties": { "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" }, "log": { "properties": { "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" } }, "type": "object" }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": { "type": "string", "enum": [ "basic" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "text": { "type": "string" }, "type": { "type": "string", "enum": [ "odata" ] } }, "required": [ "text", "type" ], "type": "object" } ] }, "version": { "type": "string", "enum": [ "v2" ] } }, "required": [ "filter", "version" ], "type": "object" }, "integrationConfigurationUri": { "type": "string" }, "integrationIcon": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "drain", "integration" ] } }, "required": [ "access", "managedBy" ], "type": "object" }, { "properties": { "access": { "type": "string", "enum": [ "some" ] }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "managedBy": { "type": "string", "enum": [ "drain", "integration" ] } }, "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." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "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", "projects", "schemas" ], "properties": { "name": { "type": "string" }, "projects": { "type": "string", "enum": [ "some", "all" ] }, "projectIds": { "type": "array", "items": { "type": "string" } }, "filter": { "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" } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "endpoint", "encoding", "compression", "fileStructure", "roleArn", "region" ], "properties": { "type": { "type": "string" }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none" ] }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "roleArn": { "type": "string" }, "region": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ], "default": "AES256" }, "objectAcl": { "type": "string", "enum": [ "private", "bucket-owner-read", "bucket-owner-full-control" ] } } } ] }, "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": { "createdAt": { "type": "number" }, "delivery": { "oneOf": [ { "properties": { "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "http" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "otlphttp" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "endpoint": { "type": "string" }, "table": { "type": "string" }, "type": { "type": "string", "enum": [ "clickhouse" ] } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "compression": { "type": "string", "enum": [ "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] }, "region": { "type": "string" }, "roleArn": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ] }, "type": { "type": "string", "enum": [ "s3" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] }, "type": { "type": "string", "enum": [ "internal" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "limits-exceeded" ] }, "firstErrorTimestamp": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "sampling": { "items": { "properties": { "env": { "type": "string", "enum": [ "preview", "production" ] }, "rate": { "type": "number" }, "requestPath": { "type": "string" }, "type": { "type": "string", "enum": [ "head_sampling" ] } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "schemas": { "properties": { "ai_gateway": { "type": "object" }, "analytics": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" }, "log": { "type": "object" }, "speed_insights": { "type": "object" }, "trace": { "type": "object" } }, "type": "object" }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "teamId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "filterV2": { "properties": { "filter": { "oneOf": [ { "properties": { "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" }, "log": { "properties": { "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" } }, "type": "object" }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": { "type": "string", "enum": [ "basic" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "text": { "type": "string" }, "type": { "type": "string", "enum": [ "odata" ] } }, "required": [ "text", "type" ], "type": "object" } ] }, "version": { "type": "string", "enum": [ "v2" ] } }, "required": [ "filter", "version" ], "type": "object" } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, "type": "array" }, { "items": { "properties": { "createdAt": { "type": "number" }, "delivery": { "oneOf": [ { "properties": { "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "http" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "otlphttp" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "endpoint": { "type": "string" }, "table": { "type": "string" }, "type": { "type": "string", "enum": [ "clickhouse" ] } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "compression": { "type": "string", "enum": [ "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] }, "region": { "type": "string" }, "roleArn": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ] }, "type": { "type": "string", "enum": [ "s3" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] }, "type": { "type": "string", "enum": [ "internal" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "limits-exceeded" ] }, "firstErrorTimestamp": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "sampling": { "items": { "properties": { "env": { "type": "string", "enum": [ "preview", "production" ] }, "rate": { "type": "number" }, "requestPath": { "type": "string" }, "type": { "type": "string", "enum": [ "head_sampling" ] } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "schemas": { "properties": { "ai_gateway": { "type": "object" }, "analytics": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" }, "log": { "type": "object" }, "speed_insights": { "type": "object" }, "trace": { "type": "object" } }, "type": "object" }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "teamId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "filterV2": { "properties": { "filter": { "oneOf": [ { "properties": { "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" }, "log": { "properties": { "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" } }, "type": "object" }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": { "type": "string", "enum": [ "basic" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "text": { "type": "string" }, "type": { "type": "string", "enum": [ "odata" ] } }, "required": [ "text", "type" ], "type": "object" } ] }, "version": { "type": "string", "enum": [ "v2" ] } }, "required": [ "filter", "version" ], "type": "object" }, "integrationConfigurationUri": { "type": "string" }, "integrationIcon": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "drain", "integration" ] } }, "required": [ "access", "managedBy" ], "type": "object" }, { "properties": { "access": { "type": "string", "enum": [ "some" ] }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "managedBy": { "type": "string", "enum": [ "drain", "integration" ] } }, "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": "" }, "410": { "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": "" }, "410": { "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": { "createdAt": { "type": "number" }, "delivery": { "oneOf": [ { "properties": { "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "http" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "otlphttp" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "endpoint": { "type": "string" }, "table": { "type": "string" }, "type": { "type": "string", "enum": [ "clickhouse" ] } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "compression": { "type": "string", "enum": [ "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] }, "region": { "type": "string" }, "roleArn": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ] }, "type": { "type": "string", "enum": [ "s3" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] }, "type": { "type": "string", "enum": [ "internal" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "limits-exceeded" ] }, "firstErrorTimestamp": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "sampling": { "items": { "properties": { "env": { "type": "string", "enum": [ "preview", "production" ] }, "rate": { "type": "number" }, "requestPath": { "type": "string" }, "type": { "type": "string", "enum": [ "head_sampling" ] } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "schemas": { "properties": { "ai_gateway": { "type": "object" }, "analytics": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" }, "log": { "type": "object" }, "speed_insights": { "type": "object" }, "trace": { "type": "object" } }, "type": "object" }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "teamId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "filterV2": { "properties": { "filter": { "oneOf": [ { "properties": { "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" }, "log": { "properties": { "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" } }, "type": "object" }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": { "type": "string", "enum": [ "basic" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "text": { "type": "string" }, "type": { "type": "string", "enum": [ "odata" ] } }, "required": [ "text", "type" ], "type": "object" } ] }, "version": { "type": "string", "enum": [ "v2" ] } }, "required": [ "filter", "version" ], "type": "object" } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "delivery": { "oneOf": [ { "properties": { "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "http" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "otlphttp" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "endpoint": { "type": "string" }, "table": { "type": "string" }, "type": { "type": "string", "enum": [ "clickhouse" ] } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "compression": { "type": "string", "enum": [ "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] }, "region": { "type": "string" }, "roleArn": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ] }, "type": { "type": "string", "enum": [ "s3" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] }, "type": { "type": "string", "enum": [ "internal" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "limits-exceeded" ] }, "firstErrorTimestamp": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "sampling": { "items": { "properties": { "env": { "type": "string", "enum": [ "preview", "production" ] }, "rate": { "type": "number" }, "requestPath": { "type": "string" }, "type": { "type": "string", "enum": [ "head_sampling" ] } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "schemas": { "properties": { "ai_gateway": { "type": "object" }, "analytics": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" }, "log": { "type": "object" }, "speed_insights": { "type": "object" }, "trace": { "type": "object" } }, "type": "object" }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "teamId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "filterV2": { "properties": { "filter": { "oneOf": [ { "properties": { "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" }, "log": { "properties": { "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" } }, "type": "object" }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": { "type": "string", "enum": [ "basic" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "text": { "type": "string" }, "type": { "type": "string", "enum": [ "odata" ] } }, "required": [ "text", "type" ], "type": "object" } ] }, "version": { "type": "string", "enum": [ "v2" ] } }, "required": [ "filter", "version" ], "type": "object" }, "integrationConfigurationUri": { "type": "string" }, "integrationIcon": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "drain", "integration" ] } }, "required": [ "access", "managedBy" ], "type": "object" }, { "properties": { "access": { "type": "string", "enum": [ "some" ] }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "managedBy": { "type": "string", "enum": [ "drain", "integration" ] } }, "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": "" }, "410": { "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": { "createdAt": { "type": "number" }, "delivery": { "oneOf": [ { "properties": { "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "http" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "otlphttp" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "endpoint": { "type": "string" }, "table": { "type": "string" }, "type": { "type": "string", "enum": [ "clickhouse" ] } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "compression": { "type": "string", "enum": [ "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] }, "region": { "type": "string" }, "roleArn": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ] }, "type": { "type": "string", "enum": [ "s3" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] }, "type": { "type": "string", "enum": [ "internal" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "limits-exceeded" ] }, "firstErrorTimestamp": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "sampling": { "items": { "properties": { "env": { "type": "string", "enum": [ "preview", "production" ] }, "rate": { "type": "number" }, "requestPath": { "type": "string" }, "type": { "type": "string", "enum": [ "head_sampling" ] } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "schemas": { "properties": { "ai_gateway": { "type": "object" }, "analytics": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" }, "log": { "type": "object" }, "speed_insights": { "type": "object" }, "trace": { "type": "object" } }, "type": "object" }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "teamId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "filterV2": { "properties": { "filter": { "oneOf": [ { "properties": { "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" }, "log": { "properties": { "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" } }, "type": "object" }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": { "type": "string", "enum": [ "basic" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "text": { "type": "string" }, "type": { "type": "string", "enum": [ "odata" ] } }, "required": [ "text", "type" ], "type": "object" } ] }, "version": { "type": "string", "enum": [ "v2" ] } }, "required": [ "filter", "version" ], "type": "object" } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "delivery": { "oneOf": [ { "properties": { "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "http" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] }, "type": { "type": "string", "enum": [ "otlphttp" ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "endpoint": { "type": "string" }, "table": { "type": "string" }, "type": { "type": "string", "enum": [ "clickhouse" ] } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "compression": { "type": "string", "enum": [ "none" ] }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "endpoint": { "type": "string" }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] }, "region": { "type": "string" }, "roleArn": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ] }, "type": { "type": "string", "enum": [ "s3" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] }, "type": { "type": "string", "enum": [ "internal" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "limits-exceeded" ] }, "firstErrorTimestamp": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "sampling": { "items": { "properties": { "env": { "type": "string", "enum": [ "preview", "production" ] }, "rate": { "type": "number" }, "requestPath": { "type": "string" }, "type": { "type": "string", "enum": [ "head_sampling" ] } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "schemas": { "properties": { "ai_gateway": { "type": "object" }, "analytics": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" }, "log": { "type": "object" }, "speed_insights": { "type": "object" }, "trace": { "type": "object" } }, "type": "object" }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "teamId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "filterV2": { "properties": { "filter": { "oneOf": [ { "properties": { "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" }, "log": { "properties": { "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" } }, "type": "object" }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "type": { "type": "string", "enum": [ "basic" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "text": { "type": "string" }, "type": { "type": "string", "enum": [ "odata" ] } }, "required": [ "text", "type" ], "type": "object" } ] }, "version": { "type": "string", "enum": [ "v2" ] } }, "required": [ "filter", "version" ], "type": "object" }, "integrationConfigurationUri": { "type": "string" }, "integrationIcon": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "drain", "integration" ] } }, "required": [ "access", "managedBy" ], "type": "object" }, { "properties": { "access": { "type": "string", "enum": [ "some" ] }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "managedBy": { "type": "string", "enum": [ "drain", "integration" ] } }, "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." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "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" }, { "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" } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "endpoint", "encoding", "compression", "fileStructure", "roleArn", "region" ], "properties": { "type": { "type": "string" }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none" ] }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "roleArn": { "type": "string" }, "region": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ], "default": "AES256" }, "objectAcl": { "type": "string", "enum": [ "private", "bucket-owner-read", "bucket-owner-full-control" ] } } } ] }, "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": { "endpoint": { "type": "string" }, "error": { "type": "string" }, "status": { "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." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "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": [ "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" } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "endpoint", "encoding", "compression", "fileStructure", "roleArn", "region" ], "properties": { "type": { "type": "string" }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "none" ] }, "fileStructure": { "type": "string", "enum": [ "hive" ] }, "roleArn": { "type": "string" }, "region": { "type": "string" }, "serverSideEncryption": { "type": "string", "enum": [ "AES256", "aws:kms", "aws:kms:dsse" ], "default": "AES256" }, "objectAcl": { "type": "string", "enum": [ "private", "bucket-owner-read", "bucket-owner-full-control" ] } } } ] } } } } } }, "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": "" }, "410": { "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": "" }, "410": { "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, "maximum": 3.1536e+07, "type": "integer" }, "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": "" }, "410": { "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": { "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": "" }, "410": { "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, "maximum": 3.1536e+07, "type": "integer" }, "srcImages": { "items": { "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/global-config": { "get": { "description": "Returns all Global Configs.", "operationId": "getEdgeConfigs", "security": [ { "bearerToken": [] } ], "summary": "Get Global Configs", "tags": [ "global-config" ], "responses": { "200": { "description": "List of all Global Configs.", "content": { "application/json": { "schema": { "items": { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string", "description": "The ID of the user who created the Global Config, optional because it is not always set." }, "digest": { "type": "string" }, "id": { "type": "string" }, "itemCount": { "type": "number" }, "ownerId": { "type": "string" }, "sizeInBytes": { "type": "number" }, "slug": { "type": "string", "description": "Name for the Global Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" } }, "required": [ "createdAt", "digest", "id", "itemCount", "ownerId", "sizeInBytes", "slug", "updatedAt" ], "type": "object", "description": "A Global Config" }, "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": "" }, "410": { "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": "getEdgeConfigs", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.globalConfig.getEdgeConfigs({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Creates a Global Config.", "operationId": "createEdgeConfig", "security": [ { "bearerToken": [] } ], "summary": "Create a Global Config", "tags": [ "global-config" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string", "description": "The ID of the user who created the Global Config, optional because it is not always set." }, "digest": { "type": "string" }, "id": { "type": "string" }, "itemCount": { "type": "number" }, "ownerId": { "type": "string" }, "sizeInBytes": { "type": "number" }, "slug": { "type": "string", "description": "Name for the Global Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" } }, "required": [ "createdAt", "digest", "id", "itemCount", "ownerId", "sizeInBytes", "slug", "updatedAt" ], "type": "object", "description": "A Global 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." }, "404": { "description": "" }, "410": { "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": [ "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.globalConfig.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();" } ] } }, "/v1/global-config/{edgeConfigId}": { "get": { "description": "Returns a Global Config.", "operationId": "getEdgeConfig", "security": [ { "bearerToken": [] } ], "summary": "Get a Global Config", "tags": [ "global-config" ], "responses": { "200": { "description": "The Global Config.", "content": { "application/json": { "schema": { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string", "description": "The ID of the user who created the Global Config, optional because it is not always set." }, "digest": { "type": "string" }, "id": { "type": "string" }, "itemCount": { "type": "number" }, "ownerId": { "type": "string" }, "sizeInBytes": { "type": "number" }, "slug": { "type": "string", "description": "Name for the Global Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" } }, "required": [ "createdAt", "digest", "id", "itemCount", "ownerId", "sizeInBytes", "slug", "updatedAt" ], "type": "object", "description": "The Global Config." } } } }, "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": "" } }, "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.globalConfig.getEdgeConfig({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "put": { "description": "Updates a Global Config.", "operationId": "updateEdgeConfig", "security": [ { "bearerToken": [] } ], "summary": "Update a Global Config", "tags": [ "global-config" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string", "description": "The ID of the user who created the Global Config, optional because it is not always set." }, "digest": { "type": "string" }, "id": { "type": "string" }, "itemCount": { "type": "number" }, "ownerId": { "type": "string" }, "sizeInBytes": { "type": "number" }, "slug": { "type": "string", "description": "Name for the Global Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" } }, "required": [ "createdAt", "digest", "id", "itemCount", "ownerId", "sizeInBytes", "slug", "updatedAt" ], "type": "object", "description": "A Global 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": "" }, "410": { "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.globalConfig.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();" } ] }, "delete": { "description": "Delete a Global Config by id.", "operationId": "deleteEdgeConfig", "security": [ { "bearerToken": [] } ], "summary": "Delete a Global Config", "tags": [ "global-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": "" }, "410": { "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.globalConfig.deleteEdgeConfig({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/global-config/{edgeConfigId}/items": { "get": { "description": "Returns all items of a Global Config.", "operationId": "getEdgeConfigItems", "security": [ { "bearerToken": [] } ], "summary": "Get Global Config items", "tags": [ "global-config" ], "responses": { "200": { "description": "List of all Global Config items.", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/GlobalConfigItem" }, "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": "" }, "410": { "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.globalConfig.getEdgeConfigItems({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update multiple Global Config Items in batch.", "operationId": "patchEdgeConfigItems", "security": [ { "bearerToken": [] } ], "summary": "Update Global Config items in batch", "tags": [ "global-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": "" }, "410": { "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": {}, "description": { "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" ] }, { "type": "object", "properties": { "operation": { "type": "string", "enum": [ "delete" ] } }, "required": [ "operation", "key" ] } ] } ] } } } } } } }, "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.globalConfig.patchEdgeConfigItems({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/global-config/{edgeConfigId}/schema": { "get": { "description": "Returns the schema of a Global Config.", "operationId": "getEdgeConfigSchema", "security": [ { "bearerToken": [] } ], "summary": "Get Global Config schema", "tags": [ "global-config" ], "responses": { "200": { "description": "The Global Config.", "content": { "application/json": { "schema": { "nullable": true, "type": "object", "description": "The Global Config." } } } }, "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": "" } }, "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.globalConfig.getEdgeConfigSchema({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Update a Global Config's schema.", "operationId": "patchEdgeConfigSchema", "security": [ { "bearerToken": [] } ], "summary": "Update Global Config schema", "tags": [ "global-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": "" }, "410": { "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.globalConfig.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();" } ] }, "delete": { "description": "Deletes the schema of existing Global Config.", "operationId": "deleteEdgeConfigSchema", "security": [ { "bearerToken": [] } ], "summary": "Delete a Global Config's schema", "tags": [ "global-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": "" }, "410": { "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.globalConfig.deleteEdgeConfigSchema({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/global-config/{edgeConfigId}/item/{edgeConfigItemKey}": { "get": { "description": "Returns a specific Global Config Item.", "operationId": "getEdgeConfigItem", "security": [ { "bearerToken": [] } ], "summary": "Get a Global Config item", "tags": [ "global-config" ], "responses": { "200": { "description": "The Global Config.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GlobalConfigItem" } } } }, "204": { "description": "The Global Config item does not exist." }, "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": "" } }, "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.globalConfig.getEdgeConfigItem({\n edgeConfigId: \"\",\n edgeConfigItemKey: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/global-config/{edgeConfigId}/tokens": { "get": { "description": "Returns all tokens of a Global Config.", "operationId": "getEdgeConfigTokens", "security": [ { "bearerToken": [] } ], "summary": "Get all tokens of a Global Config", "tags": [ "global-config" ], "responses": { "200": { "description": "List of all Global Config tokens.", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/GlobalConfigToken" }, "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": "" }, "410": { "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.globalConfig.getEdgeConfigTokens({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Deletes one or more tokens of an existing Global Config.", "operationId": "deleteEdgeConfigTokens", "security": [ { "bearerToken": [] } ], "summary": "Delete one or more Global Config tokens", "tags": [ "global-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": "" }, "410": { "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.globalConfig.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();" } ] } }, "/v1/global-config/{edgeConfigId}/token/{token}": { "get": { "description": "Return meta data about a Global Config token.", "operationId": "getEdgeConfigToken", "security": [ { "bearerToken": [] } ], "summary": "Get Global Config token meta data", "tags": [ "global-config" ], "responses": { "200": { "description": "The Global Config.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GlobalConfigToken" } } } }, "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": "" } }, "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.globalConfig.getEdgeConfigToken({\n edgeConfigId: \"\",\n token: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/global-config/{edgeConfigId}/token": { "post": { "description": "Adds a token to an existing Global Config.", "operationId": "createEdgeConfigToken", "security": [ { "bearerToken": [] } ], "summary": "Create a Global Config token", "tags": [ "global-config" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "token": { "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": "" }, "410": { "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.globalConfig.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();" } ] } }, "/v1/global-config/{edgeConfigId}/backups/{edgeConfigBackupVersionId}": { "get": { "description": "Retrieves a specific version of a Global Config from backup storage.", "operationId": "getEdgeConfigBackup", "security": [ { "bearerToken": [] } ], "summary": "Get Global Config backup", "tags": [ "global-config" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "backup": { "properties": { "digest": { "type": "string" }, "items": { "additionalProperties": { "properties": { "createdAt": { "type": "number" }, "description": { "type": "string" }, "updatedAt": { "type": "number" }, "value": { "$ref": "#/components/schemas/GlobalConfigItemValue" } }, "required": [ "createdAt", "updatedAt", "value" ], "type": "object" }, "type": "object" }, "slug": { "type": "string", "description": "Name for the Global Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" } }, "required": [ "digest", "items", "slug", "updatedAt" ], "type": "object" }, "id": { "type": "string" }, "lastModified": { "type": "number" }, "metadata": { "properties": { "itemsBytes": { "type": "number" }, "itemsCount": { "type": "number" }, "updatedAt": { "type": "string" }, "updatedBy": { "type": "string" } }, "type": "object" }, "user": { "properties": { "avatar": { "type": "string" }, "email": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "username": { "type": "string" } }, "required": [ "email", "id", "username" ], "type": "object" } }, "required": [ "backup", "id", "lastModified", "metadata" ], "type": "object", "description": "The object the API responds with when requesting a Global Config backup" }, { "properties": { "backup": { "properties": { "digest": { "type": "string" }, "items": { "additionalProperties": { "properties": { "createdAt": { "type": "number" }, "description": { "type": "string" }, "updatedAt": { "type": "number" }, "value": { "$ref": "#/components/schemas/GlobalConfigItemValue" } }, "required": [ "createdAt", "updatedAt", "value" ], "type": "object" }, "type": "object" }, "slug": { "type": "string", "description": "Name for the Global Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" } }, "required": [ "digest", "items", "slug", "updatedAt" ], "type": "object" }, "id": { "type": "string" }, "lastModified": { "type": "number" }, "metadata": { "properties": { "itemsBytes": { "type": "number" }, "itemsCount": { "type": "number" }, "updatedAt": { "type": "string" }, "updatedBy": { "type": "string" } }, "type": "object" }, "user": { "properties": { "avatar": { "type": "string" }, "email": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "username": { "type": "string" } }, "required": [ "email", "id", "username" ], "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": "" }, "410": { "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.globalConfig.getEdgeConfigBackup({\n edgeConfigId: \"\",\n edgeConfigBackupVersionId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/global-config/{edgeConfigId}/backups/{edgeConfigBackupVersionId}/restore": { "post": { "description": "Restores a Global Config backup.", "operationId": "restoreEdgeConfigBackup", "security": [ { "bearerToken": [] } ], "summary": "Restore Global Config backup", "tags": [ "global-config" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "digest": { "type": "string" }, "previousDigest": { "type": "string" }, "restoredFrom": { "type": "string" }, "status": { "type": "string", "enum": [ "ok" ] } }, "required": [ "digest", "previousDigest", "restoredFrom", "status" ], "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": "" }, "409": { "description": "" }, "410": { "description": "" }, "412": { "description": "" } }, "parameters": [ { "name": "edgeConfigId", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^ecfg_" } }, { "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": "restoreEdgeConfigBackup", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.globalConfig.restoreEdgeConfigBackup({\n edgeConfigId: \"\",\n edgeConfigBackupVersionId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/global-config/{edgeConfigId}/backups": { "get": { "description": "Returns backups of a Global Config.", "operationId": "getEdgeConfigBackups", "security": [ { "bearerToken": [] } ], "summary": "Get Global Config backups", "tags": [ "global-config" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "backups": { "items": { "properties": { "metadata": { "properties": { "itemsBytes": { "type": "number" }, "itemsCount": { "type": "number" }, "updatedAt": { "type": "string" }, "updatedBy": { "type": "string" } }, "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": "" }, "410": { "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.globalConfig.getEdgeConfigBackups({\n edgeConfigId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/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": { "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "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" }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." }, "lastEditedByPrincipal": { "oneOf": [ { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "user" ] }, "username": { "type": "string" } }, "required": [ "id", "type", "username" ], "type": "object", "description": "The principal that last edited this env var, when the editor id resolves to a known user or app. Lets clients render the right avatar instead of assuming every editor is a user." }, { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "id", "name", "type" ], "type": "object", "description": "The principal that last edited this env var, when the editor id resolves to a known user or app. Lets clients render the right avatar instead of assuming every editor is a user." } ] }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "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" ] }, "target": { "items": { "type": "string", "enum": [ "development", "preview", "production" ], "example": "production", "description": "environments this env variable targets" }, "type": "array", "description": "environments this env variable targets", "example": "production" }, "type": { "type": "string", "enum": [ "encrypted", "plain", "sensitive", "system" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "value": { "type": "string", "description": "The value of the Shared Env Var." } }, "type": "object" }, "type": "array" }, "failed": { "items": { "properties": { "error": { "properties": { "action": { "type": "string" }, "code": { "type": "string" }, "envVarId": { "type": "string" }, "envVarKey": { "type": "string" }, "gitBranch": { "type": "string" }, "key": { "type": "string" }, "link": { "type": "string" }, "message": { "type": "string" }, "project": { "type": "string" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "value": { "oneOf": [ { "type": "string" }, { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" } ] } }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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": { "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "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" }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." }, "lastEditedByPrincipal": { "oneOf": [ { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "user" ] }, "username": { "type": "string" } }, "required": [ "id", "type", "username" ], "type": "object", "description": "The principal that last edited this env var, when the editor id resolves to a known user or app. Lets clients render the right avatar instead of assuming every editor is a user." }, { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "id", "name", "type" ], "type": "object", "description": "The principal that last edited this env var, when the editor id resolves to a known user or app. Lets clients render the right avatar instead of assuming every editor is a user." } ] }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "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" ] }, "securityIssues": { "items": { "type": "string", "enum": [ "flags-secret-needs-split", "readable-secret" ] }, "type": "array" }, "target": { "items": { "type": "string", "enum": [ "development", "preview", "production" ], "example": "production", "description": "environments this env variable targets" }, "type": "array", "description": "environments this env variable targets", "example": "production" }, "type": { "type": "string", "enum": [ "encrypted", "plain", "sensitive", "system" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "value": { "type": "string", "description": "The value of the Shared Env Var." } }, "required": [ "created", "decrypted", "id", "key", "securityIssues" ], "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": "" }, "410": { "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": { "failed": { "items": { "properties": { "error": { "properties": { "action": { "type": "string" }, "code": { "type": "string" }, "envVarId": { "type": "string" }, "envVarKey": { "type": "string" }, "gitBranch": { "type": "string" }, "key": { "type": "string" }, "link": { "type": "string" }, "message": { "type": "string" }, "project": { "type": "string" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "value": { "oneOf": [ { "type": "string" }, { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" } ] } }, "required": [ "code", "message" ], "type": "object" } }, "required": [ "error" ], "type": "object" }, "type": "array" }, "updated": { "items": { "properties": { "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "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" }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." }, "lastEditedByPrincipal": { "oneOf": [ { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "user" ] }, "username": { "type": "string" } }, "required": [ "id", "type", "username" ], "type": "object", "description": "The principal that last edited this env var, when the editor id resolves to a known user or app. Lets clients render the right avatar instead of assuming every editor is a user." }, { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "id", "name", "type" ], "type": "object", "description": "The principal that last edited this env var, when the editor id resolves to a known user or app. Lets clients render the right avatar instead of assuming every editor is a user." } ] }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "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" ] }, "target": { "items": { "type": "string", "enum": [ "development", "preview", "production" ], "example": "production", "description": "environments this env variable targets" }, "type": "array", "description": "environments this env variable targets", "example": "production" }, "type": { "type": "string", "enum": [ "encrypted", "plain", "sensitive", "system" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "value": { "type": "string", "description": "The value of the Shared Env Var." } }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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": { "action": { "type": "string" }, "code": { "type": "string" }, "envVarId": { "type": "string" }, "envVarKey": { "type": "string" }, "gitBranch": { "type": "string" }, "key": { "type": "string" }, "link": { "type": "string" }, "message": { "type": "string" }, "project": { "type": "string" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "value": { "oneOf": [ { "type": "string" }, { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" } ] } }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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": { "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "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" }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." }, "lastEditedByPrincipal": { "oneOf": [ { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "user" ] }, "username": { "type": "string" } }, "required": [ "id", "type", "username" ], "type": "object", "description": "The principal that last edited this env var, when the editor id resolves to a known user or app. Lets clients render the right avatar instead of assuming every editor is a user." }, { "properties": { "avatar": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "id", "name", "type" ], "type": "object", "description": "The principal that last edited this env var, when the editor id resolves to a known user or app. Lets clients render the right avatar instead of assuming every editor is a user." } ] }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "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" ] }, "target": { "items": { "type": "string", "enum": [ "development", "preview", "production" ], "example": "production", "description": "environments this env variable targets" }, "type": "array", "description": "environments this env variable targets", "example": "production" }, "type": { "type": "string", "enum": [ "encrypted", "plain", "sensitive", "system" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "value": { "type": "string", "description": "The value of the Shared Env Var." } }, "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": "" } }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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." }, "410": { "description": "" } }, "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": "entityId", "description": "Filters events to those associated with a specific entity (matched against `payload.id`). For example, a connector ID.", "in": "query", "schema": { "description": "Filters events to those associated with a specific entity (matched against `payload.id`). For example, a connector ID.", "example": "scl_123", "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 entityId: \"scl_123\",\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." }, "410": { "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": "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();" } ] } }, "/v2/projects/{projectIdOrName}/feature-flags/flags": { "get": { "description": "Retrieve feature flags for a project. Returns an opaque cursor for pagination.", "operationId": "listFlagsV2", "security": [ { "bearerToken": [] } ], "summary": "List flags", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "pagination": { "properties": { "next": { "nullable": true, "type": "string" } }, "required": [ "next" ], "type": "object" }, "data": { "items": { "oneOf": [ { "$ref": "#/components/schemas/Flag" }, { "$ref": "#/components/schemas/MarketplaceFlag" } ] }, "type": "array" } }, "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": "" }, "410": { "description": "" }, "503": { "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": "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": 25 } }, { "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", "maxLength": 256 } }, { "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" } } }, { "name": "createdBy", "description": "Filter flags by the id of the entity that created them (a user or team id).", "in": "query", "required": false, "schema": { "description": "Filter flags by the id of the entity that created them (a user or team id).", "type": "string", "maxLength": 256 } }, { "name": "maintainerIds", "description": "Filter flags by maintainer user id. Repeat the parameter for multiple maintainers (any may match).", "in": "query", "required": false, "schema": { "description": "Filter flags by maintainer user id. Repeat the parameter for multiple maintainers (any may match).", "type": "array", "items": { "type": "string", "maxLength": 24 }, "maxItems": 25 } }, { "name": "includeMarketplaceFlags", "description": "Whether to include Marketplace experimentation items in the paginated response. Defaults to false.", "in": "query", "required": false, "schema": { "description": "Whether to include Marketplace experimentation items in the paginated response. Defaults to false.", "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": "listFlagsV2", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.listFlagsV2({\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": { "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": "" }, "410": { "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": "Deprecated. Whether to include creator metadata in each flag in the response. Resolve creator identity client-side (e.g. via the team members endpoint) instead; this parameter will be removed in a future release. Use `GET /v1/projects/:id/feature-flags/flags/:flagIdOrSlug?withMetadata=true` for single-flag lookups that need creator metadata.", "in": "query", "required": false, "schema": { "description": "Deprecated. Whether to include creator metadata in each flag in the response. Resolve creator identity client-side (e.g. via the team members endpoint) instead; this parameter will be removed in a future release. Use `GET /v1/projects/:id/feature-flags/flags/:flagIdOrSlug?withMetadata=true` for single-flag lookups that need creator metadata.", "type": "boolean", "deprecated": true } }, { "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", "maxLength": 256 } }, { "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": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "description": { "type": "string" }, "environments": { "additionalProperties": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "fallthrough": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "type": { "type": "string", "enum": [ "split" ] }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "finalPromille": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "durationMs": { "type": "number" }, "promille": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" }, "startTimestamp": { "type": "number" }, "type": { "type": "string", "enum": [ "rollout" ] } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experiment" ] } }, "required": [ "type" ], "type": "object" } ] }, "pausedOutcome": { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, "reuse": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "environment": { "type": "string" } }, "required": [ "active", "environment" ], "type": "object" }, "revision": { "type": "number" }, "rules": { "items": { "properties": { "conditions": { "items": { "properties": { "cmp": { "type": "string", "enum": [ "!contains", "!endsWith", "!eq", "!ex", "!oneOf", "!regex", "!startsWith", "after", "before", "contains", "containsAllOf", "containsAnyOf", "containsNoneOf", "endsWith", "eq", "ex", "gt", "gte", "lt", "lte", "oneOf", "regex", "startsWith" ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "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" }, "type": { "type": "string", "enum": [ "list", "list/inline" ] } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "flags": { "type": "string" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "regex" ] } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" }, "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "type": { "type": "string", "enum": [ "split" ] }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "finalPromille": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "durationMs": { "type": "number" }, "promille": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" }, "startTimestamp": { "type": "number" }, "type": { "type": "string", "enum": [ "rollout" ] } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experiment" ] } }, "required": [ "type" ], "type": "object" } ] } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" }, "targets": { "additionalProperties": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "type": "object" } }, "required": [ "active", "fallthrough", "pausedOutcome", "rules" ], "type": "object" }, "type": "object" }, "id": { "type": "string" }, "kind": { "type": "string", "enum": [ "boolean", "json", "number", "string" ] }, "maintainerIds": { "items": { "type": "string" }, "type": "array" }, "ownerId": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "projectId": { "type": "string" }, "revision": { "type": "number" }, "seed": { "type": "number" }, "slug": { "type": "string" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "typeName": { "type": "string", "enum": [ "flag" ] }, "updatedAt": { "type": "number" }, "updatedBy": { "type": "string" }, "variants": { "items": { "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "label": { "type": "string" }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "additionalProperties": true, "type": "object" }, { "items": {}, "type": "array" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "id", "value" ], "type": "object" }, "type": "array" } }, "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": "" }, "410": { "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, finalPromille is served indefinitely (100% when omitted). The final percentage does not need its own slot.", "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 }, "finalPromille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Traffic for rollToVariant after all slots expire (0-100_000, where 1_000 = 1%). Defaults to 100_000 (100%). Set 50_000 to end at 50%." } }, "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, finalPromille is served indefinitely (100% when omitted). The final percentage does not need its own slot.", "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 }, "finalPromille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Traffic for rollToVariant after all slots expire (0-100_000, where 1_000 = 1%). Defaults to 100_000 (100%). Set 50_000 to end at 50%." } }, "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": "" }, "410": { "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": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "description": { "type": "string" }, "environments": { "additionalProperties": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "fallthrough": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "type": { "type": "string", "enum": [ "split" ] }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "finalPromille": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "durationMs": { "type": "number" }, "promille": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" }, "startTimestamp": { "type": "number" }, "type": { "type": "string", "enum": [ "rollout" ] } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experiment" ] } }, "required": [ "type" ], "type": "object" } ] }, "pausedOutcome": { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, "reuse": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "environment": { "type": "string" } }, "required": [ "active", "environment" ], "type": "object" }, "revision": { "type": "number" }, "rules": { "items": { "properties": { "conditions": { "items": { "properties": { "cmp": { "type": "string", "enum": [ "!contains", "!endsWith", "!eq", "!ex", "!oneOf", "!regex", "!startsWith", "after", "before", "contains", "containsAllOf", "containsAnyOf", "containsNoneOf", "endsWith", "eq", "ex", "gt", "gte", "lt", "lte", "oneOf", "regex", "startsWith" ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "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" }, "type": { "type": "string", "enum": [ "list", "list/inline" ] } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "flags": { "type": "string" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "regex" ] } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" }, "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "type": { "type": "string", "enum": [ "split" ] }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "finalPromille": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "durationMs": { "type": "number" }, "promille": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" }, "startTimestamp": { "type": "number" }, "type": { "type": "string", "enum": [ "rollout" ] } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experiment" ] } }, "required": [ "type" ], "type": "object" } ] } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" }, "targets": { "additionalProperties": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "type": "object" } }, "required": [ "active", "fallthrough", "pausedOutcome", "rules" ], "type": "object" }, "type": "object" }, "id": { "type": "string" }, "kind": { "type": "string", "enum": [ "boolean", "json", "number", "string" ] }, "maintainerIds": { "items": { "type": "string" }, "type": "array" }, "ownerId": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "projectId": { "type": "string" }, "revision": { "type": "number" }, "seed": { "type": "number" }, "slug": { "type": "string" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "typeName": { "type": "string", "enum": [ "flag" ] }, "updatedAt": { "type": "number" }, "updatedBy": { "type": "string" }, "variants": { "items": { "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "label": { "type": "string" }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "additionalProperties": true, "type": "object" }, { "items": {}, "type": "array" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "id", "value" ], "type": "object" }, "type": "array" } }, "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": "" }, "410": { "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, finalPromille is served indefinitely (100% when omitted). The final percentage does not need its own slot.", "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 }, "finalPromille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Traffic for rollToVariant after all slots expire (0-100_000, where 1_000 = 1%). Defaults to 100_000 (100%). Set 50_000 to end at 50%." } }, "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, finalPromille is served indefinitely (100% when omitted). The final percentage does not need its own slot.", "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 }, "finalPromille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Traffic for rollToVariant after all slots expire (0-100_000, where 1_000 = 1%). Defaults to 100_000 (100%). Set 50_000 to end at 50%." } }, "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": "" }, "410": { "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": { "pagination": { "type": "object" }, "versions": { "items": { "properties": { "changedEnvironments": { "items": { "type": "string" }, "type": "array" }, "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "flagId": { "type": "string" }, "id": { "type": "string" }, "message": { "type": "string" }, "revision": { "type": "number" }, "data": { "properties": { "description": { "type": "string" }, "environments": { "additionalProperties": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "fallthrough": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "type": { "type": "string", "enum": [ "split" ] }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "finalPromille": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "durationMs": { "type": "number" }, "promille": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" }, "startTimestamp": { "type": "number" }, "type": { "type": "string", "enum": [ "rollout" ] } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experiment" ] } }, "required": [ "type" ], "type": "object" } ] }, "pausedOutcome": { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, "reuse": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "environment": { "type": "string" } }, "required": [ "active", "environment" ], "type": "object" }, "revision": { "type": "number" }, "rules": { "items": { "properties": { "conditions": { "items": { "properties": { "cmp": { "type": "string", "enum": [ "!contains", "!endsWith", "!eq", "!ex", "!oneOf", "!regex", "!startsWith", "after", "before", "contains", "containsAllOf", "containsAnyOf", "containsNoneOf", "endsWith", "eq", "ex", "gt", "gte", "lt", "lte", "oneOf", "regex", "startsWith" ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "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" }, "type": { "type": "string", "enum": [ "list", "list/inline" ] } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "flags": { "type": "string" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "regex" ] } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" }, "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "type": { "type": "string", "enum": [ "split" ] }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "finalPromille": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "durationMs": { "type": "number" }, "promille": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" }, "startTimestamp": { "type": "number" }, "type": { "type": "string", "enum": [ "rollout" ] } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experiment" ] } }, "required": [ "type" ], "type": "object" } ] } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" }, "targets": { "additionalProperties": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "type": "object" } }, "required": [ "active", "fallthrough", "pausedOutcome", "rules" ], "type": "object" }, "type": "object" }, "maintainerIds": { "items": { "type": "string" }, "type": "array" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "seed": { "type": "number" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "variants": { "items": { "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "label": { "type": "string" }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "additionalProperties": true, "type": "object" }, { "items": {}, "type": "array" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "id", "value" ], "type": "object" }, "type": "array" } }, "required": [ "environments", "seed", "state", "variants" ], "type": "object" }, "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" } }, "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": "" }, "410": { "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": { "createdAt": { "type": "number" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "entities": { "items": { "properties": { "attributes": { "items": { "properties": { "key": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "type": { "type": "string" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" }, "kind": { "type": "string" }, "label": { "type": "string" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "environments": { "items": { "type": "string" }, "type": "array" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "configUpdatedAt": { "type": "number" }, "packRevision": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "segmentCount": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "settings" ] }, "updatedAt": { "type": "number" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "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": "" }, "410": { "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": { "createdAt": { "type": "number" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "entities": { "items": { "properties": { "attributes": { "items": { "properties": { "key": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "type": { "type": "string" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" }, "kind": { "type": "string" }, "label": { "type": "string" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "environments": { "items": { "type": "string" }, "type": "array" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "configUpdatedAt": { "type": "number" }, "packRevision": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "segmentCount": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "settings" ] }, "updatedAt": { "type": "number" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "type": "object" } } } }, "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "createdAt": { "type": "number" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "entities": { "items": { "properties": { "attributes": { "items": { "properties": { "key": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "type": { "type": "string" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" }, "kind": { "type": "string" }, "label": { "type": "string" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "environments": { "items": { "type": "string" }, "type": "array" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "configUpdatedAt": { "type": "number" }, "packRevision": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "segmentCount": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "settings" ] }, "updatedAt": { "type": "number" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "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": "" }, "410": { "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": 256, "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": { "createdAt": { "type": "number" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "entities": { "items": { "properties": { "attributes": { "items": { "properties": { "key": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "type": { "type": "string" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" }, "kind": { "type": "string" }, "label": { "type": "string" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "environments": { "items": { "type": "string" }, "type": "array" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "configUpdatedAt": { "type": "number" }, "packRevision": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "segmentCount": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "settings" ] }, "updatedAt": { "type": "number" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "type": "object" }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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();" } ] } }, "/v2/teams/{teamId}/feature-flags/flags": { "get": { "description": "Retrieve all feature flags for a team across all projects. Returns an opaque cursor for pagination.", "operationId": "listTeamFlagsV2", "security": [ { "bearerToken": [] } ], "summary": "List all flags for a team", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "pagination": { "properties": { "next": { "nullable": true, "type": "string" } }, "required": [ "next" ], "type": "object" }, "data": { "items": { "oneOf": [ { "$ref": "#/components/schemas/Flag" }, { "$ref": "#/components/schemas/MarketplaceFlag" } ] }, "type": "array" } }, "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": "" }, "410": { "description": "" }, "503": { "description": "" } }, "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": "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": 25 } }, { "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", "maxLength": 256 } }, { "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" } } }, { "name": "createdBy", "description": "Filter flags by the id of the entity that created them (a user or team id).", "in": "query", "required": false, "schema": { "description": "Filter flags by the id of the entity that created them (a user or team id).", "type": "string", "maxLength": 256 } }, { "name": "maintainerIds", "description": "Filter flags by maintainer user id. Repeat the parameter for multiple maintainers (any may match).", "in": "query", "required": false, "schema": { "description": "Filter flags by maintainer user id. Repeat the parameter for multiple maintainers (any may match).", "type": "array", "items": { "type": "string", "maxLength": 24 }, "maxItems": 25 } }, { "name": "includeMarketplaceFlags", "description": "Whether to include Marketplace experimentation items in the paginated response. Defaults to false.", "in": "query", "required": false, "schema": { "description": "Whether to include Marketplace experimentation items in the paginated response. Defaults to false.", "type": "boolean" } }, { "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": "listTeamFlagsV2", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.featureFlags.listTeamFlagsV2({\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." }, "404": { "description": "" }, "410": { "description": "" } }, "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": "Deprecated. Whether to include creator metadata in each flag in the response. Resolve creator identity client-side (e.g. via the team members endpoint) instead; this parameter will be removed in a future release.", "in": "query", "required": false, "schema": { "description": "Deprecated. Whether to include creator metadata in each flag in the response. Resolve creator identity client-side (e.g. via the team members endpoint) instead; this parameter will be removed in a future release.", "type": "boolean", "deprecated": true } }, { "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", "maxLength": 256 } }, { "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": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "data": { "properties": { "exclude": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "include": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "rules": { "items": { "properties": { "conditions": { "items": { "properties": { "cmp": { "type": "string", "enum": [ "!contains", "!endsWith", "!eq", "!ex", "!oneOf", "!regex", "!startsWith", "after", "before", "contains", "containsAllOf", "containsAnyOf", "containsNoneOf", "endsWith", "eq", "ex", "gt", "gte", "lt", "lte", "oneOf", "regex", "startsWith" ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "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" }, "type": { "type": "string", "enum": [ "list", "list/inline" ] } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "flags": { "type": "string" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "regex" ] } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" }, "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "all" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "base": { "properties": { "attribute": { "type": "string" }, "kind": { "type": "string" }, "type": { "type": "string", "enum": [ "entity" ] } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "passPromille": { "type": "number" }, "type": { "type": "string", "enum": [ "split" ] } }, "required": [ "base", "passPromille", "type" ], "type": "object" } ] } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" } }, "type": "object" }, "description": { "type": "string" }, "hint": { "type": "string" }, "id": { "type": "string" }, "label": { "type": "string" }, "projectId": { "type": "string" }, "slug": { "type": "string" }, "typeName": { "type": "string", "enum": [ "segment" ] }, "updatedAt": { "type": "number" }, "usedByFlags": { "items": { "type": "string" }, "type": "array" }, "usedBySegments": { "items": { "type": "string" }, "type": "array" } }, "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": "" }, "410": { "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": "" }, "410": { "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": "" }, "410": { "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": "" }, "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": "" }, "410": { "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": "" }, "410": { "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": { "createdAt": { "type": "number" }, "deploymentId": { "type": "string" }, "flagCount": { "type": "number", "description": "The number of flag definitions returned by the flags discovery endpoint." }, "projectId": { "type": "string" }, "responseStatus": { "type": "number", "description": "The HTTP status code from the flags discovery endpoint." } }, "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": "" }, "410": { "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": { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "deletedAt": { "type": "number" }, "environment": { "type": "string" }, "hashKey": { "type": "string" }, "label": { "type": "string" }, "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********`)." }, "projectId": { "type": "string" }, "type": { "type": "string", "enum": [ "client", "mobile", "server" ] }, "updatedAt": { "type": "number" } }, "required": [ "createdAt", "createdBy", "environment", "hashKey", "partialKeyValue", "projectId", "type", "updatedAt" ], "type": "object", "description": "Shared metadata for a Flags SDK key, safe to return on both LIST and CREATE. Never contains cleartext secrets." }, "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": "" }, "410": { "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/FlagsSdkKeyWithSecrets" } } } }, "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": "" }, "410": { "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": "" }, "410": { "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": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "installationId": { "type": "number" }, "isAccessRestricted": { "type": "boolean", "enum": [ false, true ] }, "name": { "type": "string" }, "ownerType": { "type": "string" }, "provider": { "type": "string" }, "requireReauth": { "type": "boolean", "enum": [ false, true ] }, "slug": { "type": "string" }, "viewer": { "properties": { "canCreateApp": { "type": "boolean", "enum": [ false, true ] }, "role": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, "type": "object" } }, "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": "" }, "410": { "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" ] } }, { "name": "viewerMetadata", "description": "When true, includes the viewer object for each namespace.", "in": "query", "schema": { "description": "When true, includes the viewer object for each namespace.", "type": "boolean" } } ], "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": { "error": { "properties": { "code": { "type": "string", "enum": [ "installation_not_found" ] }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" } }, "required": [ "error" ], "type": "object" }, { "properties": { "gitAccount": { "properties": { "namespaceId": { "nullable": true, "type": "string" }, "provider": { "type": "string" } }, "required": [ "namespaceId", "provider" ], "type": "object" }, "repos": { "items": { "properties": { "defaultBranch": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "owner": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "private": { "type": "boolean", "enum": [ false, true ] }, "provider": { "type": "string", "enum": [ "cursor-origin" ] }, "slug": { "type": "string" }, "updatedAt": { "type": "number" }, "url": { "type": "string" } }, "required": [ "defaultBranch", "id", "name", "namespace", "owner", "ownerType", "private", "provider", "slug", "updatedAt", "url" ], "type": "object" }, "type": "array" } }, "required": [ "gitAccount", "repos" ], "type": "object" }, { "properties": { "gitAccount": { "properties": { "namespaceId": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "provider": { "type": "string", "enum": [ "bitbucket", "cursor-origin", "github", "github-custom-host", "github-limited", "gitlab", "vercel" ] } }, "required": [ "namespaceId", "provider" ], "type": "object" }, "repos": { "items": { "properties": { "defaultBranch": { "type": "string" }, "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "name": { "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": [ "team", "user" ] }, "private": { "type": "boolean", "enum": [ false, true ] }, "provider": { "type": "string", "enum": [ "bitbucket", "cursor-origin", "github", "github-custom-host", "github-limited", "gitlab", "vercel" ] }, "slug": { "type": "string" }, "updatedAt": { "type": "number" }, "url": { "type": "string" } }, "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": "" }, "410": { "description": "" }, "429": { "description": "" }, "500": { "description": "" }, "502": { "description": "" } }, "parameters": [ { "name": "query", "in": "query", "schema": { "type": "string" } }, { "name": "namespaceId", "in": "query", "schema": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "string" }, { "type": "number" } ] } }, { "name": "provider", "in": "query", "schema": { "enum": [ "github", "github-limited", "github-custom-host", "gitlab", "bitbucket", "cursor-origin" ] } }, { "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": { "cost": { "type": "string" }, "description": { "type": "string" }, "details": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "type": "object" }, "type": "array" }, "disabled": { "type": "boolean", "enum": [ false, true ] }, "effectiveDate": { "type": "string" }, "highlightedDetails": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "type": "object" }, "type": "array" }, "id": { "type": "string" }, "initialCharge": { "type": "string" }, "maximumAmount": { "type": "string" }, "maximumAmountAutoPurchasePerPeriod": { "type": "string" }, "minimumAmount": { "type": "string" }, "name": { "type": "string" }, "paymentMethodRequired": { "type": "boolean", "enum": [ false, true ] }, "preauthorizationAmount": { "type": "number" }, "quote": { "items": { "properties": { "amount": { "type": "string" }, "line": { "type": "string" } }, "required": [ "amount", "line" ], "type": "object" }, "type": "array" }, "scope": { "type": "string", "enum": [ "installation", "resource" ] }, "type": { "type": "string", "enum": [ "prepayment", "subscription" ] } }, "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": "" }, "410": { "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", "import-recommended-integrations", "organization" ] } }, { "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": "" }, "410": { "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" }, "envVarEnvironments": { "type": "array", "items": { "type": "string", "title": "EnvVarEnvironmentsTarget", "anyOf": [ { "type": "string", "enum": [ "production", "preview", "development" ], "x-speakeasy-name-override": "env_var_environments" }, { "type": "string" } ] } }, "makeEnvVarsSensitive": { "type": "boolean" } } } } } }, "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": "" }, "410": { "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", "pattern": "^https?://|^sso:" } } }, { "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": { "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." }, "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." } }, "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": "" }, "410": { "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": { "globalUserId": { "type": "string" }, "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.\"" }, "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": "" }, "410": { "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}/credentials/rotate": { "post": { "description": "Issues a replacement access token for an installation, so a partner can rotate a credential it believes is compromised without the customer having to reinstall. Authenticated by the credential being replaced plus the integration's client secret: a leaked access token on its own cannot rotate itself, which would otherwise let an attacker take over the installation and lock the partner out. The previous credential intentionally stays valid so in-flight requests keep working. Retiring it is a separate, explicit operation — a partner is never left mid-rotation without a working credential.", "operationId": "rotate-installation-credential", "security": [ { "bearerToken": [] } ], "summary": "Rotate Installation Credential", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "access_token": { "type": "string" }, "expires_in": { "type": "number" }, "scope": { "type": "string" }, "token_type": { "type": "string", "enum": [ "oauth2-token" ] } }, "required": [ "access_token", "expires_in", "scope", "token_type" ], "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "client_secret" ], "properties": { "client_secret": { "type": "string", "maxLength": 512 }, "client_id": { "type": "string" } }, "additionalProperties": false } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "rotate-installation-credential", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.rotateInstallationCredential({\n integrationConfigurationId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/installations/{integrationConfigurationId}/credentials/revoke": { "post": { "description": "Retires a superseded installation credential, so a partner can complete a rotation it started with `POST /credentials/rotate` — the leaked credential stops working without the customer having to reinstall. Authenticated by a live installation credential plus the integration's client secret. The credential to retire is named in the body rather than being the one that authenticates, so the ordinary flow is: rotate, store the replacement, then authenticate with the replacement and revoke the old one. Refuses to retire an installation's last live credential. Rotation exists so remediation is not customer-visible; revoking the only credential would undo that and leave the install needing a reinstall.", "operationId": "revoke-installation-credential", "security": [ { "bearerToken": [] } ], "summary": "Revoke Installation Credential", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "already_revoked": { "type": "boolean", "enum": [ false, true ] }, "revoked": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "already_revoked", "revoked" ], "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "token", "client_secret" ], "properties": { "token": { "type": "string", "maxLength": 512 }, "client_secret": { "type": "string", "maxLength": 512 }, "client_id": { "type": "string" } }, "additionalProperties": false } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "revoke-installation-credential", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.revokeInstallationCredential({\n integrationConfigurationId: \"\",\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": "" }, "410": { "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": { "billingPlanId": { "type": "string", "description": "The ID of the billing plan the resource is subscribed to, if applicable" }, "internalId": { "type": "string", "description": "The ID assigned by Vercel for the given resource" }, "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" }, "name": { "type": "string", "description": "The name of the resource as it is recorded in Vercel" }, "notification": { "properties": { "href": { "type": "string" }, "level": { "type": "string", "enum": [ "error", "info", "warn" ] }, "message": { "type": "string" }, "title": { "type": "string" } }, "required": [ "level", "title" ], "type": "object", "description": "The notification, if set, displayed to the user when viewing the resource in Vercel" }, "partnerId": { "type": "string", "description": "The ID provided by the partner for the given resource" }, "productId": { "type": "string", "description": "The ID of the product the resource is derived from" }, "protocolSettings": { "properties": { "authentication": { "properties": { "appUrls": { "items": { "properties": { "target": { "type": "string", "enum": [ "development", "preview", "production" ] }, "url": { "type": "string" } }, "required": [ "target", "url" ], "type": "object" }, "type": "array" } }, "type": "object" }, "experimentation": { "properties": { "edgeConfigId": { "type": "string" }, "edgeConfigSyncingEnabled": { "type": "boolean", "enum": [ false, true ] }, "edgeConfigTokenId": { "type": "string" }, "globalConfigId": { "type": "string" }, "globalConfigSyncingEnabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" } }, "type": "object", "description": "Any settings provided for the resource to support its product's protocols" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The current status of the resource" } }, "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": "" }, "410": { "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": { "billingPlanId": { "type": "string", "description": "The ID of the billing plan the resource is subscribed to, if applicable" }, "customClaims": { "properties": { "claimRules": { "items": { "properties": { "claims": { "additionalProperties": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "type": "object" }, "when": { "properties": { "environment": { "items": { "type": "string" }, "type": "array" }, "role": { "items": { "type": "string" }, "type": "array" } }, "type": "object" } }, "required": [ "claims" ], "type": "object" }, "type": "array" }, "defaultRole": { "type": "string" }, "roles": { "items": { "type": "string" }, "type": "array" } }, "type": "object", "description": "The roles and claim rules Vercel resolves into the resource tokens it mints for this resource" }, "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" }, "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" }, "name": { "type": "string", "description": "The name of the resource as it is recorded in Vercel" }, "notification": { "properties": { "href": { "type": "string" }, "level": { "type": "string", "enum": [ "error", "info", "warn" ] }, "message": { "type": "string" }, "title": { "type": "string" } }, "required": [ "level", "title" ], "type": "object", "description": "The notification, if set, displayed to the user when viewing the resource in Vercel" }, "productId": { "type": "string", "description": "The ID of the product the resource is derived from" }, "protocolSettings": { "properties": { "authentication": { "properties": { "appUrls": { "items": { "properties": { "target": { "type": "string", "enum": [ "development", "preview", "production" ] }, "url": { "type": "string" } }, "required": [ "target", "url" ], "type": "object" }, "type": "array" } }, "type": "object" }, "experimentation": { "properties": { "edgeConfigId": { "type": "string" }, "globalConfigId": { "type": "string" } }, "type": "object" } }, "type": "object", "description": "Any settings provided for the resource to support its product's protocols" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The current status of the resource" } }, "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": "" }, "410": { "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": "" }, "410": { "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. When importing as part of the user-initiated import flow, call this endpoint before redirecting the user back to Vercel. See the [Import existing resources flow](https://vercel.com/docs/integrations/create-integration/marketplace-flows#import-existing-resources-flow) for the full contract.", "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": "" }, "410": { "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": [ "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", "pattern": "^https?://|^sso:" } } }, "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 } }, "customClaims": { "type": "object", "properties": { "roles": { "type": "array", "maxItems": 32, "items": { "type": "string", "maxLength": 32 }, "description": "Roles a deployment may request when minting a token. The selected role becomes the `sub` claim." }, "defaultRole": { "type": "string", "maxLength": 32, "description": "Role used when the deployment does not request one. Required when `roles` is set." }, "claimRules": { "type": "array", "items": { "type": "object", "required": [ "claims" ], "properties": { "when": { "type": "object", "properties": { "role": { "type": "array", "minItems": 1, "maxItems": 32, "items": { "type": "string", "maxLength": 32 }, "description": "Applies only when the token is minted for one of these roles." }, "environment": { "type": "array", "minItems": 1, "maxItems": 32, "items": { "type": "string" }, "description": "Applies only when the token is minted for one of these environments: `production`, `preview`, `development`, or a custom environment slug. A custom environment also matches `preview`." } }, "additionalProperties": false }, "claims": { "type": "object", "additionalProperties": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] }, "description": "Claims to set (string, number, or boolean), shallow-merged over earlier rules and over the default claims. `null` removes a claim. Reserved claims cannot be set; `aud` and `sub` can be overridden with a string but not removed." } }, "additionalProperties": false }, "description": "Ordered rules resolved at mint time. Later rules win and shallow-merge over earlier ones." } }, "additionalProperties": false, "description": "Custom claims embedded in the resource tokens Vercel mints for this resource." } }, "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": "" }, "410": { "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", "pattern": "^https?://|^sso:" } } }, { "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 } ] }, "customClaims": { "type": "object", "properties": { "roles": { "type": "array", "maxItems": 32, "items": { "type": "string", "maxLength": 32 }, "description": "Roles a deployment may request when minting a token. The selected role becomes the `sub` claim." }, "defaultRole": { "type": "string", "maxLength": 32, "description": "Role used when the deployment does not request one. Required when `roles` is set." }, "claimRules": { "type": "array", "items": { "type": "object", "required": [ "claims" ], "properties": { "when": { "type": "object", "properties": { "role": { "type": "array", "minItems": 1, "maxItems": 32, "items": { "type": "string", "maxLength": 32 }, "description": "Applies only when the token is minted for one of these roles." }, "environment": { "type": "array", "minItems": 1, "maxItems": 32, "items": { "type": "string" }, "description": "Applies only when the token is minted for one of these environments: `production`, `preview`, `development`, or a custom environment slug. A custom environment also matches `preview`." } }, "additionalProperties": false }, "claims": { "type": "object", "additionalProperties": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] }, "description": "Claims to set (string, number, or boolean), shallow-merged over earlier rules and over the default claims. `null` removes a claim. Reserved claims cannot be set; `aud` and `sub` can be overridden with a string but not removed." } }, "additionalProperties": false }, "description": "Ordered rules resolved at mint time. Later rules win and shallow-merge over earlier ones." } }, "additionalProperties": false, "description": "Custom claims embedded in the resource tokens Vercel mints for this resource." } }, "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": "" }, "410": { "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.
5. If provided, `externalId` must be unique for the installation.
", "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "externalId": { "type": "string", "description": "Partner-provided invoice identifier. If provided, it must be unique for this installation." }, "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", "overdue" ] } }, "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": "" }, "410": { "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": { "created": { "type": "string", "description": "System creation date. ISO 8601 timestamp." }, "discounts": { "items": { "properties": { "amount": { "type": "string", "description": "Discount amount. A dollar-based decimal string." }, "billingPlanId": { "type": "string", "description": "Partner's billing plan ID." }, "details": { "type": "string", "description": "Additional discount details." }, "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." }, "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." } }, "required": [ "amount", "billingPlanId", "name" ], "type": "object", "description": "Invoice discounts." }, "type": "array", "description": "Invoice discounts." }, "externalId": { "type": "string", "description": "Partner-supplied Invoice ID, if applicable." }, "invoiceDate": { "type": "string", "description": "Invoice date. ISO 8601 timestamp." }, "invoiceId": { "type": "string", "description": "Vercel Marketplace Invoice ID." }, "invoiceNumber": { "type": "string", "description": "User-readable invoice number." }, "items": { "items": { "properties": { "billingPlanId": { "type": "string", "description": "Partner's billing plan ID." }, "details": { "type": "string", "description": "Additional item details." }, "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." }, "price": { "type": "string", "description": "Item price. A dollar-based decimal string." }, "quantity": { "type": "number", "description": "Item quantity." }, "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." }, "total": { "type": "string", "description": "Item total. A dollar-based decimal string." }, "units": { "type": "string", "description": "Units for item's quantity." } }, "required": [ "billingPlanId", "name", "price", "quantity", "total", "units" ], "type": "object", "description": "Invoice items." }, "type": "array", "description": "Invoice items." }, "memo": { "type": "string", "description": "Additional memo for the invoice." }, "paidAt": { "type": "string", "description": "Moment the invoice was paid. ISO 8601 timestamp." }, "period": { "properties": { "end": { "type": "string" }, "start": { "type": "string" } }, "required": [ "end", "start" ], "type": "object", "description": "Subscription period for this billing cycle. ISO 8601 timestamps." }, "refundedAt": { "type": "string", "description": "Most recent moment the invoice was refunded. ISO 8601 timestamp." }, "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." }, "state": { "type": "string", "enum": [ "draft", "invoiced", "notpaid", "overdue", "paid", "pending", "refund_requested", "refunded", "scheduled" ], "description": "Invoice state." }, "test": { "type": "boolean", "enum": [ false, true ], "description": "Whether the invoice is in the testmode (no real transaction created)." }, "total": { "type": "string", "description": "Invoice total amount. A dollar-based decimal string." }, "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": "" }, "410": { "description": "" }, "429": { "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": "" }, "410": { "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": "" }, "410": { "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": "" }, "410": { "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": "" }, "410": { "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": { "acceptedPoliciesInheritedFromInstallationId": { "type": "string", "description": "Historical parent installation from which acceptedPolicies were inherited. This is immutable provenance, not current authorization or relationship truth." }, "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 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "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 }, "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 }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "original-owner-left-the-team", "original-owner-role-downgraded" ] }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "id": { "type": "string", "description": "The unique identifier of the configuration", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "installationType": { "type": "string", "enum": [ "external", "marketplace" ], "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'" }, "integrationId": { "type": "string", "description": "The unique identifier of the app the configuration was created for", "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" }, "ownerId": { "type": "string", "description": "The user or team ID that owns the configuration", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "projects": { "items": { "type": "string" }, "type": "array", "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", "example": [ "prj_xQxbutw1HpL6HLYPAzt5h75m8NjO" ] }, "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" ] }, "slug": { "type": "string", "description": "The slug of the integration the configuration is created for.", "example": "slack" }, "source": { "type": "string", "enum": [ "backoffice", "cli", "deploy-button", "external", "import-recommended-integrations", "marketplace", "oauth", "organization", "resource-claims", "v0" ], "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", "example": "marketplace" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "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" } }, "type": "object", "description": "The list of configurations for the authenticated user" }, "type": "array", "description": "The list of configurations for the authenticated user" }, { "items": { "properties": { "acceptedPoliciesInheritedFromInstallationId": { "type": "string", "description": "Historical parent installation from which acceptedPolicies were inherited. This is immutable provenance, not current authorization or relationship truth." }, "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 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "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 }, "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 }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "original-owner-left-the-team", "original-owner-role-downgraded" ] }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "id": { "type": "string", "description": "The unique identifier of the configuration", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "installationType": { "type": "string", "enum": [ "external", "marketplace" ], "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'" }, "integration": { "properties": { "assignedBetaLabelAt": { "type": "number" }, "flags": { "items": { "type": "string" }, "type": "array" }, "icon": { "type": "string" }, "isLegacy": { "type": "boolean", "enum": [ false, true ] }, "name": { "type": "string" }, "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" }, "integrationId": { "type": "string", "description": "The unique identifier of the app the configuration was created for", "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" }, "ownerId": { "type": "string", "description": "The user or team ID that owns the configuration", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "projects": { "items": { "type": "string" }, "type": "array", "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", "example": [ "prj_xQxbutw1HpL6HLYPAzt5h75m8NjO" ] }, "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" ] }, "slug": { "type": "string", "description": "The slug of the integration the configuration is created for.", "example": "slack" }, "source": { "type": "string", "enum": [ "backoffice", "cli", "deploy-button", "external", "import-recommended-integrations", "marketplace", "oauth", "organization", "resource-claims", "v0" ], "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", "example": "marketplace" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "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" } }, "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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": { "acceptedPoliciesInheritedFromInstallationId": { "type": "string", "description": "Historical parent installation from which acceptedPolicies were inherited. This is immutable provenance, not current authorization or relationship truth." }, "canConfigureOpenTelemetry": { "type": "boolean", "enum": [ false, true ] }, "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 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "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 }, "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 }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "original-owner-left-the-team", "original-owner-role-downgraded" ] }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "id": { "type": "string", "description": "The unique identifier of the configuration", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "installationType": { "type": "string", "enum": [ "external", "marketplace" ], "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'" }, "integrationId": { "type": "string", "description": "The unique identifier of the app the configuration was created for", "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" }, "notification": { "properties": { "href": { "type": "string" }, "level": { "type": "string", "enum": [ "error", "info", "warn" ] }, "message": { "type": "string" }, "title": { "type": "string" } }, "required": [ "level", "title" ], "type": "object" }, "ownerId": { "type": "string", "description": "The user or team ID that owns the configuration", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "projects": { "items": { "type": "string" }, "type": "array", "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", "example": [ "prj_xQxbutw1HpL6HLYPAzt5h75m8NjO" ] }, "projectSelection": { "type": "string", "enum": [ "all", "selected" ], "description": "A string representing the permission for projects. Possible values are `all` or `selected`.", "example": "all" }, "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" ] }, "slug": { "type": "string", "description": "The slug of the integration the configuration is created for.", "example": "slack" }, "source": { "type": "string", "enum": [ "backoffice", "cli", "deploy-button", "external", "import-recommended-integrations", "marketplace", "oauth", "organization", "resource-claims", "v0" ], "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", "example": "marketplace" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "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" }, "transferRequest": { "oneOf": [ { "properties": { "approvedAt": { "type": "number" }, "approvedBy": { "type": "string" }, "authorizationId": { "type": "string" }, "billingPlan": { "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "paymentMethodRequired": { "type": "boolean", "enum": [ false, true ] }, "preauthorizationAmount": { "type": "number" }, "scope": { "type": "string", "enum": [ "installation", "resource" ] }, "type": { "type": "string", "enum": [ "prepayment", "subscription" ] } }, "required": [ "description", "id", "name", "type" ], "type": "object" }, "createdAt": { "type": "number" }, "discardedAt": { "type": "number" }, "discardedBy": { "type": "string" }, "expiresAt": { "type": "number" }, "kind": { "type": "string", "enum": [ "transfer-to-marketplace" ] }, "metadata": { "additionalProperties": true, "type": "object" }, "requester": { "properties": { "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "requestId": { "type": "string" }, "transferId": { "type": "string" } }, "required": [ "createdAt", "expiresAt", "kind", "requestId", "requester", "transferId" ], "type": "object" }, { "properties": { "approvedAt": { "type": "number" }, "approvedBy": { "type": "string" }, "authorizationId": { "type": "string" }, "createdAt": { "type": "number" }, "discardedAt": { "type": "number" }, "discardedBy": { "type": "string" }, "expiresAt": { "type": "number" }, "kind": { "type": "string", "enum": [ "transfer-from-marketplace" ] }, "requester": { "properties": { "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "requestId": { "type": "string" }, "transferId": { "type": "string" } }, "required": [ "createdAt", "expiresAt", "kind", "requestId", "requester", "transferId" ], "type": "object" } ] }, "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" } }, "required": [ "createdAt", "id", "integrationId", "notification", "ownerId", "projectSelection", "scopes", "slug", "transferRequest", "type", "updatedAt", "userId" ], "type": "object" }, { "properties": { "acceptedPoliciesInheritedFromInstallationId": { "type": "string", "description": "Historical parent installation from which acceptedPolicies were inherited. This is immutable provenance, not current authorization or relationship truth." }, "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 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "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 }, "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 }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "original-owner-left-the-team", "original-owner-role-downgraded" ] }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "id": { "type": "string", "description": "The unique identifier of the configuration", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "installationType": { "type": "string", "enum": [ "external", "marketplace" ], "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'" }, "integrationId": { "type": "string", "description": "The unique identifier of the app the configuration was created for", "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" }, "ownerId": { "type": "string", "description": "The user or team ID that owns the configuration", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "projects": { "items": { "type": "string" }, "type": "array", "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", "example": [ "prj_xQxbutw1HpL6HLYPAzt5h75m8NjO" ] }, "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" ] }, "slug": { "type": "string", "description": "The slug of the integration the configuration is created for.", "example": "slack" }, "source": { "type": "string", "enum": [ "backoffice", "cli", "deploy-button", "external", "import-recommended-integrations", "marketplace", "oauth", "organization", "resource-claims", "v0" ], "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", "example": "marketplace" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "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" } }, "required": [ "createdAt", "id", "integrationId", "ownerId", "scopes", "slug", "type", "updatedAt", "userId" ], "type": "object", "description": "The configuration with the provided id" }, { "properties": { "acceptedPoliciesInheritedFromInstallationId": { "type": "string", "description": "Historical parent installation from which acceptedPolicies were inherited. This is immutable provenance, not current authorization or relationship truth." }, "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 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "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 }, "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 }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "original-owner-left-the-team", "original-owner-role-downgraded" ] }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "id": { "type": "string", "description": "The unique identifier of the configuration", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "installationType": { "type": "string", "enum": [ "external", "marketplace" ], "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'" }, "integrationId": { "type": "string", "description": "The unique identifier of the app the configuration was created for", "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" }, "ownerId": { "type": "string", "description": "The user or team ID that owns the configuration", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "projects": { "items": { "type": "string" }, "type": "array", "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", "example": [ "prj_xQxbutw1HpL6HLYPAzt5h75m8NjO" ] }, "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" ] }, "slug": { "type": "string", "description": "The slug of the integration the configuration is created for.", "example": "slack" }, "source": { "type": "string", "enum": [ "backoffice", "cli", "deploy-button", "external", "import-recommended-integrations", "marketplace", "oauth", "organization", "resource-claims", "v0" ], "description": "Source defines where the configuration was installed from. It is used to analyze user engagement for integration installations in product metrics.", "example": "marketplace" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "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" } }, "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" }, "410": { "description": "" } }, "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" }, "410": { "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": "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": { "configuration": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "integration": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object" }, "products": { "items": { "properties": { "id": { "type": "string" }, "metadataSchema": { "properties": { "properties": { "additionalProperties": { "oneOf": [ { "properties": { "default": { "type": "string" }, "description": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "input" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "default": { "type": "number" }, "description": { "type": "string" }, "exclusiveMaximum": { "type": "number" }, "exclusiveMinimum": { "type": "number" }, "maximum": { "type": "number" }, "minimum": { "type": "number" }, "type": { "type": "string", "enum": [ "number" ] }, "ui:control": { "type": "string", "enum": [ "input" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "default": { "type": "boolean", "enum": [ false, true ] }, "description": { "type": "string" }, "type": { "type": "string", "enum": [ "boolean" ] }, "ui:control": { "type": "string", "enum": [ "toggle" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "default": { "items": { "type": "number" }, "type": "array" }, "description": { "type": "string" }, "items": { "properties": { "default": { "type": "number" }, "description": { "type": "string" }, "exclusiveMaximum": { "type": "number" }, "exclusiveMinimum": { "type": "number" }, "maximum": { "type": "number" }, "minimum": { "type": "number" }, "type": { "type": "string", "enum": [ "number" ] } }, "required": [ "type" ], "type": "object" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "type": { "type": "string", "enum": [ "array" ] }, "ui:control": { "type": "string", "enum": [ "slider" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:steps": { "items": { "type": "number" }, "type": "array" } }, "required": [ "items", "type", "ui:control", "ui:steps" ], "type": "object" }, { "properties": { "default": { "type": "string" }, "description": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "select" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:options": { "items": { "properties": { "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "default": { "type": "string" }, "description": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "radio-button" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:options": { "items": { "properties": { "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "default": { "items": { "type": "string" }, "type": "array" }, "description": { "type": "string" }, "example": { "items": { "type": "string" }, "type": "array" }, "items": { "properties": { "default": { "type": "string" }, "description": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "string" ] } }, "required": [ "type" ], "type": "object" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "type": { "type": "string", "enum": [ "array" ] }, "ui:control": { "type": "string", "enum": [ "multi-select" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:options": { "items": { "properties": { "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "items", "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "default": { "type": "string" }, "description": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "vercel-region" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:options": { "items": { "oneOf": [ { "properties": { "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, { "type": "string" }, { "properties": { "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "default": { "items": { "type": "string" }, "type": "array" }, "description": { "type": "string" }, "example": { "items": { "type": "string" }, "type": "array" }, "items": { "properties": { "default": { "type": "string" }, "description": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "string" ] } }, "required": [ "type" ], "type": "object" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "type": { "type": "string", "enum": [ "array" ] }, "ui:control": { "type": "string", "enum": [ "multi-vercel-region" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:options": { "items": { "oneOf": [ { "properties": { "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, { "type": "string" }, { "properties": { "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "items", "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "default": { "type": "string" }, "description": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "vercel-country" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:options": { "items": { "oneOf": [ { "properties": { "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, { "type": "string" }, { "properties": { "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "default": { "type": "string" }, "description": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "domain" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "description": { "type": "string" }, "git:providers": { "items": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] }, "type": "array" }, "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "git-namespace" ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:label": { "type": "string" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "type", "ui:control" ], "type": "object" } ] }, "type": "object" }, "required": { "items": { "type": "string" }, "type": "array" }, "type": { "type": "string", "enum": [ "object" ] }, "ui:order": { "items": { "type": "string" }, "type": "array" } }, "required": [ "properties", "type" ], "type": "object" }, "name": { "type": "string" }, "primaryProtocol": { "type": "string", "enum": [ "ai", "authentication", "checks", "experimentation", "logDrain", "messaging", "observability", "other", "storage", "traceDrain", "video", "workflow" ] }, "protocols": { "properties": { "ai": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "authentication": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] }, "appUrlRegistrationSupport": { "type": "boolean", "enum": [ false, true ], "description": "The partner accepts Vercel-managed app URLs via `protocolSettings.authentication.appUrls` on provision-resource and update-resource, and reconciles them into its trusted-origin / redirect-URL allowlist. When absent, consumers surface the URL for a one-time manual registration instead." } }, "required": [ "status" ], "type": "object" }, "checks": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "experimentation": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] }, "edgeConfigSyncingSupport": { "type": "boolean", "enum": [ false, true ] } }, "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" }, "messaging": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "observability": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "other": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "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" }, "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" }, "video": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "workflow": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" } }, "type": "object" }, "slug": { "type": "string" } }, "required": [ "id", "metadataSchema", "name", "protocols", "slug" ], "type": "object" }, "type": "array" } }, "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": "" }, "410": { "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": { "access_token": { "nullable": true, "type": "string" }, "expires_in": { "type": "number" }, "id_token": { "type": "string" }, "refresh_token": { "type": "string" }, "token_type": { "nullable": true, "type": "string" } }, "required": [ "access_token", "id_token", "token_type" ], "type": "object" }, { "properties": { "access_token": { "type": "string" }, "expires_in": { "type": "number" }, "id_token": { "type": "string" }, "refresh_token": { "type": "string" }, "token_type": { "type": "string" } }, "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": { "branch": { "type": "string", "description": "The branch regexp of log drain", "example": "feature/*" }, "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 }, "createdFrom": { "type": "string", "enum": [ "integration", "self-served" ], "description": "Whether the log drain was created by an integration or by a user", "example": "integration" }, "deliveryFormat": { "type": "string", "enum": [ "json", "ndjson", "protobuf" ], "description": "The delivery log format", "example": "json" }, "environments": { "items": { "type": "string", "enum": [ "preview", "production" ], "description": "The environment of log drain", "example": [ "production" ] }, "type": "array", "description": "The environment of log drain", "example": [ "production" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object", "description": "The headers to send with the request", "example": "{\"Authorization\": \"Bearer 123\"}" }, "id": { "type": "string", "description": "The unique identifier of the log drain. Always prefixed with `ld_`", "example": "ld_nBuA7zCID8g4QZ8g" }, "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" }, "samplingRate": { "type": "number", "description": "The sampling rate of log drain", "example": 0.5 }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ], "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" ] }, "url": { "type": "string", "description": "The URL to call when logs are generated", "example": "https://example.com/log-drain" } }, "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." }, "404": { "description": "" }, "410": { "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": "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": { "branch": { "type": "string", "description": "The branch regexp of log drain", "example": "feature/*" }, "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 }, "createdFrom": { "type": "string", "enum": [ "integration", "self-served" ], "description": "Whether the log drain was created by an integration or by a user", "example": "integration" }, "deliveryFormat": { "type": "string", "enum": [ "json", "ndjson", "protobuf" ], "description": "The delivery log format", "example": "json" }, "environments": { "items": { "type": "string", "enum": [ "preview", "production" ], "description": "The environment of log drain", "example": [ "production" ] }, "type": "array", "description": "The environment of log drain", "example": [ "production" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object", "description": "The headers to send with the request", "example": "{\"Authorization\": \"Bearer 123\"}" }, "id": { "type": "string", "description": "The unique identifier of the log drain. Always prefixed with `ld_`", "example": "ld_nBuA7zCID8g4QZ8g" }, "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" }, "samplingRate": { "type": "number", "description": "The sampling rate of log drain", "example": 0.5 }, "source": { "oneOf": [ { "properties": { "defaultFor": { "type": "string", "enum": [ "eve-tracing" ], "description": "Informational marker for a system-owned default drain." }, "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "externalResourceId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ], "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" ] }, "url": { "type": "string", "description": "The URL to call when logs are generated", "example": "https://example.com/log-drain" } }, "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." }, "404": { "description": "" }, "410": { "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": { "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": "" }, "410": { "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}" } ] } }, "/api-keys": { "post": { "description": "", "operationId": "createApiKeys", "security": [], "tags": [], "responses": { "200": { "description": "Successfully created an API key.", "content": { "application/json": { "schema": { "type": "object", "properties": { "apiKeyString": { "description": "The API key's actual value. This value is only provided in this response, and can never be retrieved again in the future. Be sure to save it somewhere safe!", "example": "uRKJSTt0L4RaSkiMj41QTkxM", "type": "string" }, "apiKey": { "$ref": "#/components/schemas/APIKey" } }, "required": [ "apiKeyString", "apiKey" ] } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized.", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ] } }, "required": [ "error" ] } } } }, "403": { "description": "You do not have permission to access this resource.", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ] } }, "required": [ "error" ] } } } }, "404": { "description": "" }, "409": { "description": "" }, "410": { "description": "" }, "429": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "code": { "type": "string" }, "name": { "type": "string" }, "message": { "type": "string" }, "limit": { "type": "number" } }, "required": [ "code", "name", "message", "limit" ] } }, "required": [ "error" ] } } } }, "500": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "object", "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ] } }, "required": [ "error" ] } } } } }, "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "purpose" ], "properties": { "purpose": { "type": "string", "description": "The API key's purpose, which restricts how it can be used." }, "projectId": { "type": "string", "description": "An optional project to restrict the API key to.", "example": "prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB" }, "name": { "type": "string", "description": "An optional name for the API key.", "example": "API Key for App 123" }, "expiresAt": { "type": "number", "description": "The API key's expiration, expressed as a UNIX timestamp in milliseconds." }, "aiGatewayQuota": { "type": "object", "description": "Optional AI Gateway quota configuration for the API key.", "properties": { "limitAmount": { "type": "number", "minimum": 1, "description": "The quota limit amount." }, "includeByokInQuota": { "type": "boolean", "default": false, "description": "Whether to include BYOK (Bring Your Own Key) usage in the quota." }, "refreshPeriod": { "type": "string", "enum": [ "daily", "weekly", "monthly", "none" ], "default": "none", "description": "How often the quota refreshes." }, "alertThresholds": { "type": "array", "items": { "type": "number", "enum": [ 50, 75, 100 ] }, "description": "Spend percentages (a subset of [50, 75, 100]) at which to send a spend alert." } }, "required": [ "limitAmount" ] }, "metadata": { "type": "object", "description": "Optional generic metadata for the API key. The accepted shape depends on the key's `purpose` and is validated on creation; for `ai-gateway` keys this accepts `environment`.", "additionalProperties": true } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createApiKeys", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n const result = await vercel.createApiKeys({\n purpose: \"\",\n projectId: \"prj_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n name: \"API Key for App 123\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/kms/issuers/{issuerId}/sign/message": { "post": { "description": "Sign a raw message with a KMS issuer's active signing key. Authenticate the request with a Vercel OIDC token in the `Authorization: Bearer` header; the issuer's policies decide which workloads are allowed to sign. The response `signature` is standard-base64 of the raw signature over the decoded message bytes. `keyId`, `algorithm`, and `fingerprint` identify the signing key in the issuer's JWKS.", "operationId": "signKmsMessage", "security": [ { "bearerToken": [] } ], "summary": "Sign a message", "tags": [ "kms" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "algorithm": { "type": "string", "description": "Algorithm of the signing key." }, "fingerprint": { "type": "string", "description": "SHA-256 fingerprint of the signing key's public key (`SHA256:`)." }, "keyId": { "type": "string", "description": "Key id of the signing key. Matches the JWKS `kid` so verifiers can select the key after rotation without trial-verifying every published key." }, "signature": { "type": "string", "description": "Standard-base64 encoding of the raw signature over the decoded message bytes." } }, "required": [ "algorithm", "fingerprint", "keyId", "signature" ], "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": "" }, "404": { "description": "" }, "429": { "description": "" } }, "parameters": [ { "name": "issuerId", "description": "The ID of the issuer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the issuer." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "message" ], "properties": { "message": { "type": "string", "description": "Base64-encoded message to be signed.", "maxLength": 44000, "pattern": "^[A-Za-z0-9+/]*={0,2}$" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "signKmsMessage", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.kms.signKmsMessage({\n issuerId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/kms/issuers/{issuerId}/sign/token": { "post": { "description": "Sign a JWT with a KMS issuer's active signing key. Authenticate the request with a Vercel OIDC token in the `Authorization: Bearer` header; the issuer's policies decide which workloads are allowed to sign. `keyId`, `algorithm`, and `fingerprint` identify the signing key in the issuer's JWKS.", "operationId": "signKmsToken", "security": [ { "bearerToken": [] } ], "summary": "Sign a token", "tags": [ "kms" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "algorithm": { "type": "string", "description": "Algorithm of the signing key." }, "fingerprint": { "type": "string", "description": "SHA-256 fingerprint of the signing key's public key (`SHA256:`)." }, "keyId": { "type": "string", "description": "Key id of the signing key. Matches the JWKS `kid` so verifiers can select the key after rotation without trial-verifying every published key." }, "token": { "type": "string", "description": "Compact JWT signed by the issuer's active signing key." } }, "required": [ "algorithm", "fingerprint", "keyId", "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": "" }, "403": { "description": "" }, "404": { "description": "" }, "429": { "description": "" } }, "parameters": [ { "name": "issuerId", "description": "The ID of the issuer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the issuer." } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "claims": { "type": "object", "description": "The claims to include in the token.", "maxProperties": 128 }, "headers": { "type": "object", "description": "Additional headers to include in the token.", "maxProperties": 64 }, "ttl": { "type": "number", "description": "The time-to-live for the token, in seconds.", "default": 300, "nullable": true } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "signKmsToken", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.kms.signKmsToken({\n issuerId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/kms/issuers": { "get": { "description": "Retrieve the list of KMS issuers that belong to the authenticated team. The results are paginated.", "operationId": "listKmsIssuers", "security": [ { "bearerToken": [] } ], "summary": "List issuers", "tags": [ "kms" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "issuers": { "items": { "properties": { "algorithm": { "type": "string", "enum": [ "ES256", "ES384", "ES512", "PS256", "PS384", "PS512", "RS256", "RS384", "RS512" ] }, "claimsSchema": { "additionalProperties": true, "type": "object" }, "createdAt": { "type": "string" }, "id": { "type": "string" }, "managedBy": { "type": "string" }, "name": { "type": "string" }, "origin": { "type": "string", "enum": [ "external", "vercel" ] }, "ownerId": { "type": "string" }, "policies": { "items": { "oneOf": [ { "properties": { "createdAt": { "type": "string" }, "environments": { "items": { "type": "string" }, "type": "array", "description": "Environments whose OIDC tokens this grant authorizes. Each entry is either a system environment slug (`production`, `preview`, `development`) or a custom environment ID (prefixed `env_`). Custom environments are matched against the token's `custom_environment_id` claim (the stable ID); system environments against its `environment` claim." }, "kind": { "type": "string", "enum": [ "project-grant" ] }, "projectId": { "type": "string" }, "teamId": { "type": "string" }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "createdAt", "environments", "kind", "projectId", "teamId", "updatedAt" ], "type": "object" }, { "properties": { "clientId": { "type": "string" }, "createdAt": { "type": "string" }, "kind": { "type": "string", "enum": [ "connex-grant" ] }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "clientId", "createdAt", "kind", "updatedAt" ], "type": "object" } ] }, "type": "array" }, "signingKeys": { "items": { "properties": { "activateAt": { "type": "string" }, "activatedAt": { "type": "string", "description": "When the key became the active signer. Present for active and revoking keys (and absent for pending keys and rows predating this field)." }, "algorithm": { "type": "string" }, "certificatePem": { "type": "string", "description": "The stored X.509 certificate (from `publicKey.x5c[0]`) in PEM form, ready to render. Present only for keys created with a stored certificate; omitted for keys created before certificates were stored." }, "createdAt": { "type": "string" }, "importKeyId": { "type": "string", "description": "The caller-supplied key id (imported keys only), used as the JWT/JWKS `kid`. Not unique across an issuer's keys; omitted for generated keys." }, "issuerId": { "type": "string" }, "keyId": { "type": "string", "description": "The server-minted, unique record identifier. Use this to address the key on the activate / certificate endpoints." }, "publicKey": { "properties": { "alg": { "type": "string" }, "key_ops": { "items": { "type": "string" }, "type": "array" }, "kid": { "type": "string" }, "kty": { "type": "string" }, "use": { "type": "string" }, "x5c": { "items": { "type": "string" }, "type": "array", "description": "The X.509 certificate chain (RFC 7517 §4.7). Each entry is the base64 DER (not base64url) of a certificate. For keys minted with a stored certificate this holds the single self-signed cert as `[x5c]`." }, "x5t#S256": { "type": "string", "description": "The base64url SHA-256 thumbprint of the DER certificate in `x5c[0]` (RFC 7517 §4.9)." } }, "type": "object" }, "publicKeyFingerprint": { "type": "string" }, "publicKeyPem": { "type": "string", "description": "The public key in SPKI PEM form, ready to render. Present whenever the key has public key material. Derived from `publicKey`; the embedded certificate members (`x5c`/`x5t#S256`) do not affect it." }, "revokeAt": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "pending", "revoking" ] }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "issuerId", "keyId", "publicKeyFingerprint", "status", "updatedAt" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "id", "name", "origin", "ownerId", "policies", "signingKeys", "updatedAt" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "count": { "type": "number" }, "next": { "nullable": true, "type": "string" } }, "required": [ "count", "next" ], "type": "object" } }, "required": [ "issuers", "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "limit", "description": "Maximum number of issuers to return.", "in": "query", "schema": { "type": "integer", "minimum": 1, "maximum": 100, "description": "Maximum number of issuers to return." } }, { "name": "next", "description": "Continuation cursor to retrieve the next page of results.", "in": "query", "schema": { "type": "string", "maxLength": 1024, "pattern": "^[A-Za-z0-9_-]+$", "description": "Continuation cursor to retrieve the next page of results." } }, { "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": "listKmsIssuers", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.kms.listKmsIssuers({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "post": { "description": "Create a new KMS issuer for the authenticated team. An issuer owns the asymmetric signing keys that are used to sign tokens and messages.", "operationId": "createKmsIssuer", "security": [ { "bearerToken": [] } ], "summary": "Create an issuer", "tags": [ "kms" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "algorithm": { "type": "string", "enum": [ "ES256", "ES384", "ES512", "PS256", "PS384", "PS512", "RS256", "RS384", "RS512" ] }, "claimsSchema": { "additionalProperties": true, "type": "object" }, "createdAt": { "type": "string" }, "id": { "type": "string" }, "managedBy": { "type": "string" }, "name": { "type": "string" }, "origin": { "type": "string", "enum": [ "external", "vercel" ] }, "ownerId": { "type": "string" }, "policies": { "items": { "oneOf": [ { "properties": { "createdAt": { "type": "string" }, "environments": { "items": { "type": "string" }, "type": "array", "description": "Environments whose OIDC tokens this grant authorizes. Each entry is either a system environment slug (`production`, `preview`, `development`) or a custom environment ID (prefixed `env_`). Custom environments are matched against the token's `custom_environment_id` claim (the stable ID); system environments against its `environment` claim." }, "kind": { "type": "string", "enum": [ "project-grant" ] }, "projectId": { "type": "string" }, "teamId": { "type": "string" }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "createdAt", "environments", "kind", "projectId", "teamId", "updatedAt" ], "type": "object" }, { "properties": { "clientId": { "type": "string" }, "createdAt": { "type": "string" }, "kind": { "type": "string", "enum": [ "connex-grant" ] }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "clientId", "createdAt", "kind", "updatedAt" ], "type": "object" } ] }, "type": "array" }, "signingKeys": { "items": { "properties": { "activateAt": { "type": "string" }, "activatedAt": { "type": "string", "description": "When the key became the active signer. Present for active and revoking keys (and absent for pending keys and rows predating this field)." }, "algorithm": { "type": "string" }, "certificatePem": { "type": "string", "description": "The stored X.509 certificate (from `publicKey.x5c[0]`) in PEM form, ready to render. Present only for keys created with a stored certificate; omitted for keys created before certificates were stored." }, "createdAt": { "type": "string" }, "importKeyId": { "type": "string", "description": "The caller-supplied key id (imported keys only), used as the JWT/JWKS `kid`. Not unique across an issuer's keys; omitted for generated keys." }, "issuerId": { "type": "string" }, "keyId": { "type": "string", "description": "The server-minted, unique record identifier. Use this to address the key on the activate / certificate endpoints." }, "publicKey": { "properties": { "alg": { "type": "string" }, "key_ops": { "items": { "type": "string" }, "type": "array" }, "kid": { "type": "string" }, "kty": { "type": "string" }, "use": { "type": "string" }, "x5c": { "items": { "type": "string" }, "type": "array", "description": "The X.509 certificate chain (RFC 7517 §4.7). Each entry is the base64 DER (not base64url) of a certificate. For keys minted with a stored certificate this holds the single self-signed cert as `[x5c]`." }, "x5t#S256": { "type": "string", "description": "The base64url SHA-256 thumbprint of the DER certificate in `x5c[0]` (RFC 7517 §4.9)." } }, "type": "object" }, "publicKeyFingerprint": { "type": "string" }, "publicKeyPem": { "type": "string", "description": "The public key in SPKI PEM form, ready to render. Present whenever the key has public key material. Derived from `publicKey`; the embedded certificate members (`x5c`/`x5t#S256`) do not affect it." }, "revokeAt": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "pending", "revoking" ] }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "issuerId", "keyId", "publicKeyFingerprint", "status", "updatedAt" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "id", "name", "origin", "ownerId", "policies", "signingKeys", "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." }, "404": { "description": "" }, "410": { "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", "description": "The name of the issuer." }, "algorithm": { "type": "string", "description": "The signing algorithm to use for the issuer.", "enum": [ "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" ], "default": "RS512" }, "claimsSchema": { "type": "object", "description": "A JSON Schema used to validate the resolved token claims when signing tokens for this issuer.", "additionalProperties": true }, "policy": { "oneOf": [ { "type": "object", "additionalProperties": false, "required": [ "kind", "teamId", "projectId", "environments" ], "properties": { "kind": { "type": "string", "enum": [ "project-grant" ] }, "teamId": { "type": "string", "description": "The team ID for the project grant policy." }, "projectId": { "type": "string", "description": "The project ID for the project grant policy." }, "environments": { "type": "array", "description": "The environments for the project grant policy. Each entry is a system environment (production, preview, development) or a custom environment ID (env_...).", "items": { "type": "string", "pattern": "^(?:production|preview|development|env_.+)$" }, "minItems": 1, "uniqueItems": true }, "tokenClaims": { "type": "object", "description": "The claims that KMS should include in signed JWTs for this policy.", "additionalProperties": true } } }, { "type": "object", "additionalProperties": false, "required": [ "kind", "clientId" ], "properties": { "kind": { "type": "string", "enum": [ "connex-grant" ] }, "clientId": { "type": "string", "description": "The Connex client ID for the Connex grant policy." }, "tokenClaims": { "type": "object", "description": "The claims that KMS should include in signed JWTs for this policy.", "additionalProperties": true } } } ] }, "importKey": { "type": "string", "description": "The PEM-encoded private key to use for the issuer." }, "importKeyId": { "type": "string", "description": "The key id to use as the imported key's JWT/JWKS `kid`. Only allowed when `importKey` is provided. Not required to be unique; the addressable key id is the server-minted `keyId` returned in the response.", "maxLength": 128, "pattern": "^[A-Za-z0-9._-]+$" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createKmsIssuer", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.kms.createKmsIssuer({\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/kms/issuers/{issuerId}/keys": { "post": { "description": "Create a new signing key for a KMS issuer. Depending on the activation mode, the key is activated automatically once its public key has propagated, or manually via the activate endpoint.", "operationId": "createKmsSigningKey", "security": [ { "bearerToken": [] } ], "summary": "Create a signing key", "tags": [ "kms" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "activateAt": { "type": "string" }, "activatedAt": { "type": "string", "description": "When the key became the active signer. Present for active and revoking keys (and absent for pending keys and rows predating this field)." }, "algorithm": { "type": "string" }, "certificatePem": { "type": "string", "description": "The stored X.509 certificate (from `publicKey.x5c[0]`) in PEM form, ready to render. Present only for keys created with a stored certificate; omitted for keys created before certificates were stored." }, "createdAt": { "type": "string" }, "importKeyId": { "type": "string", "description": "The caller-supplied key id (imported keys only), used as the JWT/JWKS `kid`. Not unique across an issuer's keys; omitted for generated keys." }, "issuerId": { "type": "string" }, "keyId": { "type": "string", "description": "The server-minted, unique record identifier. Use this to address the key on the activate / certificate endpoints." }, "publicKey": { "properties": { "alg": { "type": "string" }, "key_ops": { "items": { "type": "string" }, "type": "array" }, "kid": { "type": "string" }, "kty": { "type": "string" }, "use": { "type": "string" }, "x5c": { "items": { "type": "string" }, "type": "array", "description": "The X.509 certificate chain (RFC 7517 §4.7). Each entry is the base64 DER (not base64url) of a certificate. For keys minted with a stored certificate this holds the single self-signed cert as `[x5c]`." }, "x5t#S256": { "type": "string", "description": "The base64url SHA-256 thumbprint of the DER certificate in `x5c[0]` (RFC 7517 §4.9)." } }, "type": "object" }, "publicKeyFingerprint": { "type": "string" }, "publicKeyPem": { "type": "string", "description": "The public key in SPKI PEM form, ready to render. Present whenever the key has public key material. Derived from `publicKey`; the embedded certificate members (`x5c`/`x5t#S256`) do not affect it." }, "revokeAt": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "pending", "revoking" ] }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "issuerId", "keyId", "publicKeyFingerprint", "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "issuerId", "description": "The ID of the issuer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the issuer." } }, { "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": { "activation": { "type": "string", "enum": [ "automatic", "manual" ], "description": "Whether the new key is activated automatically after its public key has propagated, or manually via the activate endpoint. Defaults to `automatic`." }, "revokePreviousAfterHours": { "type": "number", "minimum": 0, "description": "For automatic activation, how many hours after activation the previous signing key should stop being used. Defaults to a 1 hour grace period so already-issued tokens keep verifying." }, "revokePreviousAt": { "description": "Deprecated. The ISO date string or timestamp when the previous signing key should stop being used. Converted to a relative grace and applied at activation, not creation. Prefer revokePreviousAfterHours.", "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "importKey": { "type": "string", "description": "The PEM-encoded private key to use for the issuer." }, "importKeyId": { "type": "string", "description": "The key id to use as the imported key's JWT/JWKS `kid`. Only allowed when `importKey` is provided. Not required to be unique; the addressable key id is the server-minted `keyId` returned in the response.", "maxLength": 128, "pattern": "^[A-Za-z0-9._-]+$" } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createKmsSigningKey", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.kms.createKmsSigningKey({\n issuerId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/kms/issuers/{issuerId}/keys/{keyId}/activate": { "post": { "description": "Activate a pending signing key so the issuer starts signing with it.", "operationId": "activateKmsSigningKey", "security": [ { "bearerToken": [] } ], "summary": "Activate a signing key", "tags": [ "kms" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "activateAt": { "type": "string" }, "activatedAt": { "type": "string", "description": "When the key became the active signer. Present for active and revoking keys (and absent for pending keys and rows predating this field)." }, "algorithm": { "type": "string" }, "certificatePem": { "type": "string", "description": "The stored X.509 certificate (from `publicKey.x5c[0]`) in PEM form, ready to render. Present only for keys created with a stored certificate; omitted for keys created before certificates were stored." }, "createdAt": { "type": "string" }, "importKeyId": { "type": "string", "description": "The caller-supplied key id (imported keys only), used as the JWT/JWKS `kid`. Not unique across an issuer's keys; omitted for generated keys." }, "issuerId": { "type": "string" }, "keyId": { "type": "string", "description": "The server-minted, unique record identifier. Use this to address the key on the activate / certificate endpoints." }, "publicKey": { "properties": { "alg": { "type": "string" }, "key_ops": { "items": { "type": "string" }, "type": "array" }, "kid": { "type": "string" }, "kty": { "type": "string" }, "use": { "type": "string" }, "x5c": { "items": { "type": "string" }, "type": "array", "description": "The X.509 certificate chain (RFC 7517 §4.7). Each entry is the base64 DER (not base64url) of a certificate. For keys minted with a stored certificate this holds the single self-signed cert as `[x5c]`." }, "x5t#S256": { "type": "string", "description": "The base64url SHA-256 thumbprint of the DER certificate in `x5c[0]` (RFC 7517 §4.9)." } }, "type": "object" }, "publicKeyFingerprint": { "type": "string" }, "publicKeyPem": { "type": "string", "description": "The public key in SPKI PEM form, ready to render. Present whenever the key has public key material. Derived from `publicKey`; the embedded certificate members (`x5c`/`x5t#S256`) do not affect it." }, "revokeAt": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "pending", "revoking" ] }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "issuerId", "keyId", "publicKeyFingerprint", "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." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "issuerId", "description": "The ID of the issuer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the issuer." } }, { "name": "keyId", "description": "The ID of the pending signing key to activate.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the pending signing key to activate." } }, { "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": { "revokePreviousAfterHours": { "type": "number", "minimum": 0, "description": "How many hours after activation the previously-active key should stop being used. Defaults to a 1 hour grace period so already-issued tokens keep verifying." } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "activateKmsSigningKey", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.kms.activateKmsSigningKey({\n issuerId: \"\",\n keyId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/kms/issuers/{issuerId}/keys/{keyId}/revoke": { "post": { "description": "Immediately revoke a signing key that is already scheduled for revocation.", "operationId": "revokeKmsSigningKey", "security": [ { "bearerToken": [] } ], "summary": "Revoke a signing key", "tags": [ "kms" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "algorithm": { "type": "string", "enum": [ "ES256", "ES384", "ES512", "PS256", "PS384", "PS512", "RS256", "RS384", "RS512" ] }, "claimsSchema": { "additionalProperties": true, "type": "object" }, "createdAt": { "type": "string" }, "id": { "type": "string" }, "managedBy": { "type": "string" }, "name": { "type": "string" }, "origin": { "type": "string", "enum": [ "external", "vercel" ] }, "ownerId": { "type": "string" }, "policies": { "items": { "oneOf": [ { "properties": { "createdAt": { "type": "string" }, "environments": { "items": { "type": "string" }, "type": "array", "description": "Environments whose OIDC tokens this grant authorizes. Each entry is either a system environment slug (`production`, `preview`, `development`) or a custom environment ID (prefixed `env_`). Custom environments are matched against the token's `custom_environment_id` claim (the stable ID); system environments against its `environment` claim." }, "kind": { "type": "string", "enum": [ "project-grant" ] }, "projectId": { "type": "string" }, "teamId": { "type": "string" }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "createdAt", "environments", "kind", "projectId", "teamId", "updatedAt" ], "type": "object" }, { "properties": { "clientId": { "type": "string" }, "createdAt": { "type": "string" }, "kind": { "type": "string", "enum": [ "connex-grant" ] }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "clientId", "createdAt", "kind", "updatedAt" ], "type": "object" } ] }, "type": "array" }, "signingKeys": { "items": { "properties": { "activateAt": { "type": "string" }, "activatedAt": { "type": "string", "description": "When the key became the active signer. Present for active and revoking keys (and absent for pending keys and rows predating this field)." }, "algorithm": { "type": "string" }, "certificatePem": { "type": "string", "description": "The stored X.509 certificate (from `publicKey.x5c[0]`) in PEM form, ready to render. Present only for keys created with a stored certificate; omitted for keys created before certificates were stored." }, "createdAt": { "type": "string" }, "importKeyId": { "type": "string", "description": "The caller-supplied key id (imported keys only), used as the JWT/JWKS `kid`. Not unique across an issuer's keys; omitted for generated keys." }, "issuerId": { "type": "string" }, "keyId": { "type": "string", "description": "The server-minted, unique record identifier. Use this to address the key on the activate / certificate endpoints." }, "publicKey": { "properties": { "alg": { "type": "string" }, "key_ops": { "items": { "type": "string" }, "type": "array" }, "kid": { "type": "string" }, "kty": { "type": "string" }, "use": { "type": "string" }, "x5c": { "items": { "type": "string" }, "type": "array", "description": "The X.509 certificate chain (RFC 7517 §4.7). Each entry is the base64 DER (not base64url) of a certificate. For keys minted with a stored certificate this holds the single self-signed cert as `[x5c]`." }, "x5t#S256": { "type": "string", "description": "The base64url SHA-256 thumbprint of the DER certificate in `x5c[0]` (RFC 7517 §4.9)." } }, "type": "object" }, "publicKeyFingerprint": { "type": "string" }, "publicKeyPem": { "type": "string", "description": "The public key in SPKI PEM form, ready to render. Present whenever the key has public key material. Derived from `publicKey`; the embedded certificate members (`x5c`/`x5t#S256`) do not affect it." }, "revokeAt": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "pending", "revoking" ] }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "issuerId", "keyId", "publicKeyFingerprint", "status", "updatedAt" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "id", "name", "origin", "ownerId", "policies", "signingKeys", "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": "" }, "409": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "issuerId", "description": "The ID of the issuer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the issuer." } }, { "name": "keyId", "description": "The ID of the signing key to revoke immediately. The key must already be scheduled for revocation.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the signing key to revoke immediately. The key must already be scheduled for revocation." } }, { "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": "revokeKmsSigningKey", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.kms.revokeKmsSigningKey({\n issuerId: \"\",\n keyId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/kms/issuers/{issuerId}": { "get": { "description": "Retrieve a single KMS issuer by its ID. Accepts either a team bearer token (existing path) or an OIDC token authorized by one of the issuer's policies (e.g. a connex-grant token). The OIDC path returns the issuer without policies, since a policy token only proves signing access, not management access.", "operationId": "getKmsIssuer", "security": [ { "bearerToken": [] } ], "summary": "Get an issuer", "tags": [ "kms" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "algorithm": { "type": "string", "enum": [ "ES256", "ES384", "ES512", "PS256", "PS384", "PS512", "RS256", "RS384", "RS512" ] }, "claimsSchema": { "additionalProperties": true, "type": "object" }, "createdAt": { "type": "string" }, "id": { "type": "string" }, "managedBy": { "type": "string" }, "name": { "type": "string" }, "origin": { "type": "string", "enum": [ "external", "vercel" ] }, "ownerId": { "type": "string" }, "policies": { "items": { "oneOf": [ { "properties": { "createdAt": { "type": "string" }, "environments": { "items": { "type": "string" }, "type": "array", "description": "Environments whose OIDC tokens this grant authorizes. Each entry is either a system environment slug (`production`, `preview`, `development`) or a custom environment ID (prefixed `env_`). Custom environments are matched against the token's `custom_environment_id` claim (the stable ID); system environments against its `environment` claim." }, "kind": { "type": "string", "enum": [ "project-grant" ] }, "projectId": { "type": "string" }, "teamId": { "type": "string" }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "createdAt", "environments", "kind", "projectId", "teamId", "updatedAt" ], "type": "object" }, { "properties": { "clientId": { "type": "string" }, "createdAt": { "type": "string" }, "kind": { "type": "string", "enum": [ "connex-grant" ] }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "clientId", "createdAt", "kind", "updatedAt" ], "type": "object" } ] }, "type": "array" }, "signingKeys": { "items": { "properties": { "activateAt": { "type": "string" }, "activatedAt": { "type": "string", "description": "When the key became the active signer. Present for active and revoking keys (and absent for pending keys and rows predating this field)." }, "algorithm": { "type": "string" }, "certificatePem": { "type": "string", "description": "The stored X.509 certificate (from `publicKey.x5c[0]`) in PEM form, ready to render. Present only for keys created with a stored certificate; omitted for keys created before certificates were stored." }, "createdAt": { "type": "string" }, "importKeyId": { "type": "string", "description": "The caller-supplied key id (imported keys only), used as the JWT/JWKS `kid`. Not unique across an issuer's keys; omitted for generated keys." }, "issuerId": { "type": "string" }, "keyId": { "type": "string", "description": "The server-minted, unique record identifier. Use this to address the key on the activate / certificate endpoints." }, "publicKey": { "properties": { "alg": { "type": "string" }, "key_ops": { "items": { "type": "string" }, "type": "array" }, "kid": { "type": "string" }, "kty": { "type": "string" }, "use": { "type": "string" }, "x5c": { "items": { "type": "string" }, "type": "array", "description": "The X.509 certificate chain (RFC 7517 §4.7). Each entry is the base64 DER (not base64url) of a certificate. For keys minted with a stored certificate this holds the single self-signed cert as `[x5c]`." }, "x5t#S256": { "type": "string", "description": "The base64url SHA-256 thumbprint of the DER certificate in `x5c[0]` (RFC 7517 §4.9)." } }, "type": "object" }, "publicKeyFingerprint": { "type": "string" }, "publicKeyPem": { "type": "string", "description": "The public key in SPKI PEM form, ready to render. Present whenever the key has public key material. Derived from `publicKey`; the embedded certificate members (`x5c`/`x5t#S256`) do not affect it." }, "revokeAt": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "pending", "revoking" ] }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "issuerId", "keyId", "publicKeyFingerprint", "status", "updatedAt" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "id", "name", "origin", "ownerId", "policies", "signingKeys", "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "issuerId", "description": "The ID of the issuer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the issuer." } }, { "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": "getKmsIssuer", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.kms.getKmsIssuer({\n issuerId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "patch": { "description": "Update a KMS issuer's name or claims schema.", "operationId": "updateKmsIssuer", "security": [ { "bearerToken": [] } ], "summary": "Update an issuer", "tags": [ "kms" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "algorithm": { "type": "string", "enum": [ "ES256", "ES384", "ES512", "PS256", "PS384", "PS512", "RS256", "RS384", "RS512" ] }, "claimsSchema": { "additionalProperties": true, "type": "object" }, "createdAt": { "type": "string" }, "id": { "type": "string" }, "managedBy": { "type": "string" }, "name": { "type": "string" }, "origin": { "type": "string", "enum": [ "external", "vercel" ] }, "ownerId": { "type": "string" }, "policies": { "items": { "oneOf": [ { "properties": { "createdAt": { "type": "string" }, "environments": { "items": { "type": "string" }, "type": "array", "description": "Environments whose OIDC tokens this grant authorizes. Each entry is either a system environment slug (`production`, `preview`, `development`) or a custom environment ID (prefixed `env_`). Custom environments are matched against the token's `custom_environment_id` claim (the stable ID); system environments against its `environment` claim." }, "kind": { "type": "string", "enum": [ "project-grant" ] }, "projectId": { "type": "string" }, "teamId": { "type": "string" }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "createdAt", "environments", "kind", "projectId", "teamId", "updatedAt" ], "type": "object" }, { "properties": { "clientId": { "type": "string" }, "createdAt": { "type": "string" }, "kind": { "type": "string", "enum": [ "connex-grant" ] }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "clientId", "createdAt", "kind", "updatedAt" ], "type": "object" } ] }, "type": "array" }, "signingKeys": { "items": { "properties": { "activateAt": { "type": "string" }, "activatedAt": { "type": "string", "description": "When the key became the active signer. Present for active and revoking keys (and absent for pending keys and rows predating this field)." }, "algorithm": { "type": "string" }, "certificatePem": { "type": "string", "description": "The stored X.509 certificate (from `publicKey.x5c[0]`) in PEM form, ready to render. Present only for keys created with a stored certificate; omitted for keys created before certificates were stored." }, "createdAt": { "type": "string" }, "importKeyId": { "type": "string", "description": "The caller-supplied key id (imported keys only), used as the JWT/JWKS `kid`. Not unique across an issuer's keys; omitted for generated keys." }, "issuerId": { "type": "string" }, "keyId": { "type": "string", "description": "The server-minted, unique record identifier. Use this to address the key on the activate / certificate endpoints." }, "publicKey": { "properties": { "alg": { "type": "string" }, "key_ops": { "items": { "type": "string" }, "type": "array" }, "kid": { "type": "string" }, "kty": { "type": "string" }, "use": { "type": "string" }, "x5c": { "items": { "type": "string" }, "type": "array", "description": "The X.509 certificate chain (RFC 7517 §4.7). Each entry is the base64 DER (not base64url) of a certificate. For keys minted with a stored certificate this holds the single self-signed cert as `[x5c]`." }, "x5t#S256": { "type": "string", "description": "The base64url SHA-256 thumbprint of the DER certificate in `x5c[0]` (RFC 7517 §4.9)." } }, "type": "object" }, "publicKeyFingerprint": { "type": "string" }, "publicKeyPem": { "type": "string", "description": "The public key in SPKI PEM form, ready to render. Present whenever the key has public key material. Derived from `publicKey`; the embedded certificate members (`x5c`/`x5t#S256`) do not affect it." }, "revokeAt": { "type": "string" }, "status": { "type": "string", "enum": [ "active", "pending", "revoking" ] }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "issuerId", "keyId", "publicKeyFingerprint", "status", "updatedAt" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "string" } }, "required": [ "algorithm", "createdAt", "id", "name", "origin", "ownerId", "policies", "signingKeys", "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "issuerId", "description": "The ID of the issuer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the issuer." } }, { "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, "minProperties": 1, "properties": { "name": { "type": "string", "description": "The name of the issuer." }, "claimsSchema": { "type": "object", "description": "A JSON Schema used to validate the resolved token claims when signing tokens for this issuer. Pass null to remove it.", "additionalProperties": true, "nullable": true } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateKmsIssuer", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.kms.updateKmsIssuer({\n issuerId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Delete a KMS issuer and its signing keys.", "operationId": "deleteKmsIssuer", "security": [ { "bearerToken": [] } ], "summary": "Delete an issuer", "tags": [ "kms" ], "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "issuerId", "description": "The ID of the issuer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the issuer." } }, { "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": "deleteKmsIssuer", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.kms.deleteKmsIssuer({\n issuerId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/v1/kms/issuers/{issuerId}/policies": { "post": { "description": "Attach a policy to a KMS issuer that grants a project's deployments permission to sign with it.", "operationId": "createKmsIssuerPolicy", "security": [ { "bearerToken": [] } ], "summary": "Create an issuer policy", "tags": [ "kms" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "createdAt": { "type": "string" }, "environments": { "items": { "type": "string" }, "type": "array", "description": "Environments whose OIDC tokens this grant authorizes. Each entry is either a system environment slug (`production`, `preview`, `development`) or a custom environment ID (prefixed `env_`). Custom environments are matched against the token's `custom_environment_id` claim (the stable ID); system environments against its `environment` claim." }, "kind": { "type": "string", "enum": [ "project-grant" ] }, "projectId": { "type": "string" }, "teamId": { "type": "string" }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "createdAt", "environments", "kind", "projectId", "teamId", "updatedAt" ], "type": "object" }, { "properties": { "clientId": { "type": "string" }, "createdAt": { "type": "string" }, "kind": { "type": "string", "enum": [ "connex-grant" ] }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "clientId", "createdAt", "kind", "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "issuerId", "description": "The ID of the issuer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the issuer." } }, { "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": [ "kind", "projectId", "environments" ], "properties": { "kind": { "type": "string", "enum": [ "project-grant" ] }, "projectId": { "type": "string", "description": "The project ID for the project grant policy." }, "environments": { "type": "array", "description": "The environments for the project grant policy. Each entry is a system environment (production, preview, development) or a custom environment ID (env_...).", "items": { "type": "string", "pattern": "^(?:production|preview|development|env_.+)$" }, "minItems": 1, "uniqueItems": true }, "tokenClaims": { "type": "object", "description": "The claims that KMS should include in signed JWTs for this policy.", "additionalProperties": true } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createKmsIssuerPolicy", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.kms.createKmsIssuerPolicy({\n issuerId: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v1/kms/issuers/{issuerId}/policies/{kind}/{policyKey}": { "patch": { "description": "Update an existing KMS issuer policy's environments or token claims.", "operationId": "updateKmsIssuerPolicy", "security": [ { "bearerToken": [] } ], "summary": "Update an issuer policy", "tags": [ "kms" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "createdAt": { "type": "string" }, "environments": { "items": { "type": "string" }, "type": "array", "description": "Environments whose OIDC tokens this grant authorizes. Each entry is either a system environment slug (`production`, `preview`, `development`) or a custom environment ID (prefixed `env_`). Custom environments are matched against the token's `custom_environment_id` claim (the stable ID); system environments against its `environment` claim." }, "kind": { "type": "string", "enum": [ "project-grant" ] }, "projectId": { "type": "string" }, "teamId": { "type": "string" }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "createdAt", "environments", "kind", "projectId", "teamId", "updatedAt" ], "type": "object" }, { "properties": { "clientId": { "type": "string" }, "createdAt": { "type": "string" }, "kind": { "type": "string", "enum": [ "connex-grant" ] }, "tokenClaims": { "additionalProperties": true, "type": "object" }, "updatedAt": { "type": "string" } }, "required": [ "clientId", "createdAt", "kind", "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "issuerId", "description": "The ID of the issuer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the issuer." } }, { "name": "kind", "description": "The issuer policy kind.", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "project-grant" ], "description": "The issuer policy kind." } }, { "name": "policyKey", "description": "The policy identifier.", "in": "path", "required": true, "schema": { "type": "string", "description": "The policy 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" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "environments": { "type": "array", "description": "The environments for the project grant policy. Each entry is a system environment (production, preview, development) or a custom environment ID (env_...).", "items": { "type": "string", "pattern": "^(?:production|preview|development|env_.+)$" }, "minItems": 1, "uniqueItems": true }, "tokenClaims": { "type": "object", "description": "The claims that KMS should include in signed JWTs for this policy. Pass null to remove them.", "additionalProperties": true, "nullable": true } } } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "updateKmsIssuerPolicy", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.kms.updateKmsIssuerPolicy({\n issuerId: \"\",\n kind: \"project-grant\",\n policyKey: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "delete": { "description": "Remove a policy from a KMS issuer.", "operationId": "deleteKmsIssuerPolicy", "security": [ { "bearerToken": [] } ], "summary": "Delete an issuer policy", "tags": [ "kms" ], "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": "" }, "410": { "description": "" } }, "parameters": [ { "name": "issuerId", "description": "The ID of the issuer.", "in": "path", "required": true, "schema": { "type": "string", "description": "The ID of the issuer." } }, { "name": "kind", "description": "The issuer policy kind.", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "project-grant", "connex-grant" ], "description": "The issuer policy kind." } }, { "name": "policyKey", "description": "The policy identifier.", "in": "path", "required": true, "schema": { "type": "string", "description": "The policy 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": "deleteKmsIssuerPolicy", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n await vercel.kms.deleteKmsIssuerPolicy({\n issuerId: \"\",\n kind: \"project-grant\",\n policyKey: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n\n}\n\nrun();" } ] } }, "/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": { "domain": { "type": "string" }, "level": { "type": "string", "enum": [ "debug", "error", "fatal", "info", "trace", "warning" ] }, "message": { "type": "string" }, "messageTruncated": { "type": "boolean", "enum": [ false, true ] }, "requestMethod": { "type": "string" }, "requestPath": { "type": "string" }, "responseStatusCode": { "type": "number" }, "rowId": { "type": "string" }, "source": { "type": "string", "enum": [ "delimiter", "edge-function", "edge-middleware", "request", "serverless" ] }, "timestampInMs": { "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." }, "404": { "description": "" }, "410": { "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": "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": "" }, "410": { "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": "" }, "410": { "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": "" }, "410": { "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/global-config": { "head": { "description": "When the user enabled Global Config syncing, then this endpoint can be used by the partner to fetch the contents of the Global Config.", "operationId": "headInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationGlobalConfig", "security": [ { "bearerToken": [] } ], "summary": "Get the data of a user-provided Global Config", "tags": [ "marketplace" ], "responses": { "200": { "description": "The Global Config data", "content": { "application/json": { "schema": { "properties": { "digest": { "type": "string" }, "items": { "additionalProperties": { "$ref": "#/components/schemas/GlobalConfigItemValue" }, "type": "object" }, "purpose": { "type": "string", "enum": [ "experimentation", "flags" ] }, "updatedAt": { "type": "number" } }, "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": "" }, "410": { "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": "headInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationGlobalConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.headInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationGlobalConfig({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "get": { "description": "When the user enabled Global Config syncing, then this endpoint can be used by the partner to fetch the contents of the Global Config.", "operationId": "getInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationGlobalConfig", "security": [ { "bearerToken": [] } ], "summary": "Get the data of a user-provided Global Config", "tags": [ "marketplace" ], "responses": { "200": { "description": "The Global Config data", "content": { "application/json": { "schema": { "properties": { "digest": { "type": "string" }, "items": { "additionalProperties": { "$ref": "#/components/schemas/GlobalConfigItemValue" }, "type": "object" }, "purpose": { "type": "string", "enum": [ "experimentation", "flags" ] }, "updatedAt": { "type": "number" } }, "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": "" }, "410": { "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": "getInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationGlobalConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.getInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationGlobalConfig({\n integrationConfigurationId: \"\",\n resourceId: \"\",\n });\n\n console.log(result);\n}\n\nrun();" } ] }, "put": { "description": "When the user enabled Global Config syncing, then this endpoint can be used by the partner to push their configuration data into the relevant Global Config.", "operationId": "replaceInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationGlobalConfig", "security": [ { "bearerToken": [] } ], "summary": "Push data into a user-provided Global Config", "tags": [ "marketplace" ], "responses": { "200": { "description": "The Global Config was updated", "content": { "application/json": { "schema": { "properties": { "digest": { "type": "string" }, "items": { "additionalProperties": { "$ref": "#/components/schemas/GlobalConfigItemValue" }, "type": "object" }, "purpose": { "type": "string", "enum": [ "experimentation", "flags" ] }, "updatedAt": { "type": "number" } }, "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": "" }, "410": { "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-codeSamples": [ { "lang": "typescript", "label": "replaceInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationGlobalConfig", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel({\n bearerToken: \"\",\n});\n\nasync function run() {\n const result = await vercel.marketplace.replaceInstallationsByIntegrationConfigurationIdResourcesByResourceIdExperimentationGlobalConfig({\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." }, "404": { "description": "" }, "410": { "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" } } ], "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" }, "alias": { "items": { "properties": { "configuredBy": { "nullable": true, "type": "string", "enum": [ "A", "CNAME", "dns-01", "http", 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 ] } ] }, "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": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "dest": { "type": "string" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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 ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "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": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ] }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "url": { "type": "string" }, "userId": { "type": "string", "description": "Present for user creators; omitted for app/integration/system creators." }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "preview", "production" ] }, "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": [ "PREVIEW", "PRODUCTION", "STAGING" ] } }, "required": [ "deployment", "domain", "environment", "target" ], "type": "object" }, "type": "array" }, "analytics": { "properties": { "canceledAt": { "nullable": true, "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "id": { "type": "string" }, "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 ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "avatar": { "nullable": true, "type": "string" }, "blobs": { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false, true ], "description": "Marks the team-level, Vercel-managed default blob project (`vercel-blob-default-project`) that orphan blob stores are scoped to when connected without an explicit project. Set only by internal storage flows and immutable after creation — guards rely on it to protect the connected stores from being lost when the project is deleted or transferred." } }, "type": "object" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "concurrencyBucketName": { "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "aws": { "properties": { "securityGroupId": { "type": "string" }, "subnetIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "subnetIds" ], "type": "object" }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "type": "string" }, "createdAt": { "type": "number" }, "dc": { "type": "string" }, "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "preview", "production" ] } ] }, "passive": { "type": "boolean", "enum": [ false, true ] }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "createdAt": { "type": "number" }, "creator": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "via": { "nullable": true, "oneOf": [ { "properties": { "app": { "properties": { "clientId": { "type": "string", "description": "The protocol-facing OAuth client ID. This may differ from {@link id} when Client ID Metadata Documents (CIMD) are used." }, "id": { "type": "string", "description": "The internal ID of the Vercel App backing this principal." } }, "required": [ "id" ], "type": "object" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "app", "type" ], "type": "object", "description": "Set when a Vercel App or Integration acts on behalf of a {@link User}. Captures user-consented OAuth delegation that the ACL layer may inspect to evaluate scope restrictions. This is NOT for impersonation or token-exchange provenance — those live on `auth.token`, not on the principal." }, { "properties": { "integration": { "properties": { "configurationId": { "type": "string" }, "integrationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" }, "type": { "type": "string", "enum": [ "integration" ] } }, "required": [ "integration", "type" ], "type": "object", "description": "Set when a Vercel App or Integration acts on behalf of a {@link User}. Captures user-consented OAuth delegation that the ACL layer may inspect to evaluate scope restrictions. This is NOT for impersonation or token-exchange provenance — those live on `auth.token`, not on the principal." } ] }, "user": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "type", "user", "via" ], "type": "object" }, { "properties": { "app": { "properties": { "clientId": { "type": "string", "description": "The protocol-facing OAuth client ID. This may differ from {@link id} when Client ID Metadata Documents (CIMD) are used." }, "id": { "type": "string", "description": "The internal ID of the Vercel App backing this principal." } }, "required": [ "id" ], "type": "object" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "app", "type" ], "type": "object" }, { "properties": { "integration": { "properties": { "configurationId": { "type": "string" }, "integrationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" }, "type": { "type": "string", "enum": [ "integration" ] } }, "required": [ "integration", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object" } ] }, "crons": { "properties": { "definitions": { "items": { "properties": { "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "host": { "type": "string", "description": "The hostname that should be used.", "example": "vercel.com" }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." }, "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)." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" }, "deploymentId": { "nullable": true, "type": "string", "description": "The ID of the Deployment from which the definitions originated." }, "disabledAt": { "nullable": true, "type": "number", "description": "The time the feature was disabled for this project." }, "enabledAt": { "type": "number", "description": "The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs." }, "updatedAt": { "type": "number" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "customEnvironments": { "items": { "properties": { "branchMatcher": { "properties": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "domains": { "items": { "properties": { "apexName": { "type": "string" }, "createdAt": { "type": "number" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "gitBranch": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "updatedAt": { "type": "number" }, "verification": { "items": { "properties": { "domain": { "type": "string" }, "reason": { "type": "string" }, "type": { "type": "string" }, "value": { "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`." }, "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", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "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": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "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" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "dataCache": { "properties": { "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] }, "userDisabled": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "defaultResourceConfig": { "properties": { "buildMachineElasticLastUpdated": { "type": "number" }, "buildMachineElasticReason": { "type": "string", "enum": [ "basic-floor", "build-timeout-failure", "enospc-failure", "enterprise-floor", "high-peak-disk", "high-peak-memory", "long-build-duration", "oom-failure", "short-build-duration", "sustained-high-cpu" ] }, "buildMachineElasticTransition": { "properties": { "algorithmVersion": { "type": "string" }, "at": { "type": "number" }, "direction": { "type": "string", "enum": [ "downgrade", "upgrade" ] } }, "required": [ "algorithmVersion", "at", "direction" ], "type": "object" }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "deploymentExpiration": { "properties": { "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." }, "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview 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." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." } }, "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." }, "deploymentPolicy": { "nullable": true, "properties": { "deploymentSources": { "nullable": true, "items": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "oneOf": [ { "properties": { "target": { "type": "string", "enum": [ "preview", "production" ] }, "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "target", "type" ], "type": "object" }, { "properties": { "environmentId": { "type": "string" }, "type": { "type": "string", "enum": [ "custom" ] } }, "required": [ "environmentId", "type" ], "type": "object" } ] }, "type": "array" }, "sources": { "items": { "type": "string", "enum": [ "cli", "deploy-hook", "git", "integration", "rest-api", "v0" ], "description": "Customer-configurable deployment sources. Every deploy classifies to exactly one. JSON schema in `packages/deployment-policy/schemas/body.ts` enumerates exactly these values. - `'git'` — git provider webhook. - `'cli'` — Vercel CLI (legacy classic-token CLI and SIWV CLI both). - `'rest-api'` — direct user/team-token REST upload. Does NOT cover deploy hooks, Marketplace integrations, or first-party app tokens. - `'deploy-hook'` — project deploy-hook URL. The URL is the credential. - `'integration'` — third-party Marketplace actor: Marketplace integration token, user-delegated OAuth from a Marketplace app, or an unrecognized third-party Vercel App. First-party Vercel Apps are never `'integration'`. - `'v0'` — the v0 product surface (entitlement-gated). v0 deploys through the CLI under the hood, but classifies as its own source so a team can allow or deny v0 independently of `'cli'`. First-party Vercel apps (Toolbar, etc.) classify as `'first-party'` — see `ClassifiedSource` in `./checks`. They're not in this union because they aren't customer-configurable; they bypass `checkDeploymentSources` entirely. v0 is intentionally NOT among them: like the CLI, it's a real product surface and is policy-controllable." }, "type": "array" } }, "required": [ "enabled", "environments", "sources" ], "type": "object", "description": "`enabled: true` with empty `sources` is deny-all." }, "type": "array" }, "gitSources": { "nullable": true, "items": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "oneOf": [ { "properties": { "target": { "type": "string", "enum": [ "preview", "production" ] }, "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "target", "type" ], "type": "object" }, { "properties": { "environmentId": { "type": "string" }, "type": { "type": "string", "enum": [ "custom" ] } }, "required": [ "environmentId", "type" ], "type": "object" } ] }, "type": "array" }, "sources": { "items": { "oneOf": [ { "properties": { "org": { "type": "string" }, "provider": { "type": "string", "enum": [ "bitbucket", "github" ] }, "repo": { "type": "string" } }, "required": [ "org", "provider" ], "type": "object", "description": "Allowlist entry for GitHub and Bitbucket, whose repos are identified by a flat `org`/`repo` (Bitbucket's workspace/owner maps to `org`, its repo slug to `repo`). Omit `repo` to match any repo in the org. Org is matched case-insensitively." }, { "properties": { "namespace": { "type": "string" }, "project": { "type": "string" }, "provider": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "namespace", "provider" ], "type": "object", "description": "Allowlist entry for GitLab, which uses nested groups rather than a flat org/repo. `namespace` is the full group path (e.g. `group` or `group/subgroup`); `project` is the leaf project name. Omit `project` to match any project under the namespace. Namespace is matched case-insensitively." } ] }, "type": "array" } }, "required": [ "enabled", "environments", "sources" ], "type": "object", "description": "`enabled: true` with empty `sources` is deny-all." }, "type": "array" } }, "type": "object", "description": "Project shape. `null` on a rule list clears the project's override for that rule type (fall back to team for every env); omitting is equivalent. Setting `deploymentPolicy` itself to `null` clears every override at once. Kept structurally distinct from {@link TeamDeploymentPolicy} so the two storage locations don't share a type by accident." }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "dismissedToasts": { "items": { "properties": { "action": { "type": "string", "enum": [ "accept", "cancel", "delete" ] }, "dismissedAt": { "type": "number" }, "key": { "type": "string" }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "currentValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "previousValue": { "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" }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] }, "enablePreviewFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "enableProductionFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "env": { "items": { "properties": { "comment": { "type": "string" }, "configurationId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-read-write-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-store-id" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-webhook-public-key" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-prisma-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-user" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-host" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-password" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-database" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "integration-store-secret" ] } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "string" }, "type": { "type": "string", "enum": [ "flags-connection-string" ] } }, "required": [ "projectId", "type" ], "type": "object" } ] }, "createdAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "gitBranch": { "type": "string" }, "id": { "type": "string" }, "internalContentHint": { "nullable": true, "properties": { "encryptedValue": { "type": "string", "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." }, "type": { "type": "string", "enum": [ "flags-secret" ] } }, "required": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "key": { "type": "string" }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "secret", "sensitive", "system" ] }, "updatedAt": { "type": "number" }, "updatedBy": { "nullable": true, "type": "string" }, "value": { "type": "string" }, "visibility": { "type": "string", "enum": [ "config", "secret" ], "description": "User-facing config/secret model. When set, authoritative for new code paths. Legacy rows omit this field and callers fall back to existing `type` behavior." }, "vsmValue": { "type": "string" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "expiration": { "oneOf": [ { "properties": { "expiresAt": { "type": "number", "description": "Unix ms timestamp when the project is scheduled to expire." } }, "required": [ "expiresAt" ], "type": "object" }, { "properties": { "lockedAt": { "type": "number", "description": "Unix ms timestamp when the project was locked." }, "lockedBy": { "type": "string", "description": "userId of the actor that triggered the lock (system or admin)." } }, "required": [ "lockedAt", "lockedBy" ], "type": "object" } ] }, "features": { "properties": { "webAnalytics": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "factory-eve", "fastapi", "fasthtml", "fastify", "flask", "gatsby", "go", "gridsome", "h3", "hexo", "hono", "hugo", "hydrogen", "ionic-angular", "ionic-react", "jekyll", "koa", "mastra", "middleman", "nestjs", "nextjs", "nitro", "node", "nuxtjs", "parcel", "polymer", "preact", "python", "react-router", "redwoodjs", "remix", "ruby", "rust", "saber", "sanity", "sanity-v2", "sapper", "scully", "services", "solidstart", "solidstart-1", "stencil", "storybook", "svelte", "sveltekit", "sveltekit-1", "tanstack-start", "tanstack-start-lovable", "umijs", "vite", "vitepress", "vue", "vuepress", "xmcp", "zola", null ] }, "gitComments": { "properties": { "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" }, "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "gitProviderOptions": { "properties": { "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." }, "createDeployments": { "type": "string", "enum": [ "disabled", "enabled" ], "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 - `true`: disable repository-dispatch events for this project (explicit override of the team setting). - `false`: enable repository-dispatch events for this project (explicit override of the team setting). - absent: inherit from `team.disableRepositoryDispatchEvents`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "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`." } }, "required": [ "createDeployments" ], "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "hasDeployments": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "expiry": { "type": "number" }, "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "type": { "type": "string", "enum": [ "header" ] }, "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" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "jobs": { "properties": { "flag-definitions-present": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "mfe-config-present": { "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" }, "lastAliasRequest": { "nullable": true, "properties": { "fromDeploymentId": { "nullable": true, "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": [ "failed", "in-progress", "pending", "skipped", "succeeded" ] }, "requestedAt": { "type": "number" }, "toDeploymentId": { "type": "string" }, "type": { "type": "string", "enum": [ "promote", "rollback" ] } }, "required": [ "fromDeploymentId", "jobStatus", "requestedAt", "toDeploymentId", "type" ], "type": "object" }, "lastRollbackTarget": { "nullable": true, "type": "object" }, "latestDeployments": { "items": { "properties": { "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": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "dest": { "type": "string" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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 ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "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": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ] }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "url": { "type": "string" }, "userId": { "type": "string", "description": "Present for user creators; omitted for app/integration/system creators." }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url" ], "type": "object" }, "type": "array" }, "link": { "oneOf": [ { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github-limited" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "host": { "type": "string" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github-custom-host" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "productionBranch": { "type": "string" }, "projectId": { "type": "string" }, "projectName": { "type": "string" }, "projectNamespace": { "type": "string" }, "projectNameWithNamespace": { "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "gitlab" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "type": "object" }, { "properties": { "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" }, "name": { "type": "string" }, "owner": { "type": "string" }, "productionBranch": { "type": "string" }, "slug": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "updatedAt": { "type": "number" }, "uuid": { "type": "string" }, "workspaceUuid": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "vercel" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "repoId", "type" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "v0" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "repoId", "type" ], "type": "object" }, { "properties": { "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" }, "owner": { "type": "string", "description": "Owner (namespace) slug, e.g. `acme`." }, "ownerId": { "type": "string", "description": "Origin namespace id (`ns_…`) of the owner." }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "owner", "ownerId", "productionBranch", "repo", "repoId", "type" ], "type": "object" } ] }, "live": { "type": "boolean", "enum": [ false, true ] }, "microfrontends": { "oneOf": [ { "properties": { "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`" }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "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." }, "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." }, "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "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`" }, "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." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "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." }, "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." }, "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." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "updatedAt": { "type": "number" } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "global", "team" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "optionsAllowlist": { "nullable": true, "properties": { "paths": { "items": { "properties": { "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" } }, "required": [ "paths" ], "type": "object" }, "outputDirectory": { "nullable": true, "type": "string" }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "passport": { "nullable": true, "properties": { "connectorId": { "type": "string" }, "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] } }, "required": [ "connectorId", "deploymentType" ], "type": "object" }, "passwordProtection": { "nullable": true, "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "permissions": { "properties": { "accessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "agent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayApiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayApiKeyBypassAll": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayApiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayApiKeySpendAttribution": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayApiKeyZdrExemption": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayBudget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayCredits": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayGuardrails": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayPrivateModels": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayRules": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewaySettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayTranscripts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayTranscriptsSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayVirtualModelConfigs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "alertRules": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "alerts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aliasGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aliasProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "analytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "analyticsSampling": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "analyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "apiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "apiKeyAiGateway": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "apiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "auditLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "automation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingAddress": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingInformation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingInvoiceEmailRecipient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingInvoiceLanguage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingPurchaseOrder": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingRefund": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingTaxId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "blob": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "blobStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "budget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "buildMachine": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "buildMachineDefault": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "bulkRedirects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "cacheArtifact": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "cacheArtifactUsageEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "ciInvocations": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "ciLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "codeChecks": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "codeOwners": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "concurrentBuilds": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connect": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connectConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connectConfigurationLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connectLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connexClient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connexClientProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connexContact": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connexInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connexToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "cursorOriginInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "dataCacheBillingSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "dataCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "defaultDeploymentProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deployment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentBuildLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentCheckPreview": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentCheckReRunFromProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentPolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentPreview": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentPrivate": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentProductionGit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentPromote": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentProtectionException": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentRollback": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentV0": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainAcceptDelegation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainAuthCodes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainCertificate": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainPurchase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainRecord": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "drain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "edgeCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "edgeConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "edgeConfigItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "edgeConfigSchema": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "edgeConfigToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "endpointVerification": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "environments": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "fileUpload": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "flagsExplorerSubscription": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "gitCredentialGrant": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "gitRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "imageOptimizationNewPrice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationConfigurationProjects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationConfigurationRole": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationConfigurationTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationDeploymentAction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationPullRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationResource": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationResourceData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationResourceReplCommand": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationResourceSecrets": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationSSOSession": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationVercelConfigurationOverride": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "ipBlocking": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "job": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "jobGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "kmsIssuer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "kmsProjectGrant": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "logDrain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "logs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "logsPreset": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceBillingData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceExperimentationEdgeConfigData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceExperimentationItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceFlexCommit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceInstallationMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "messageboard": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "messageboardSpace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "messageboardTask": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "Monitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "monitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "monitoringChart": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "monitoringQuery": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "monitoringSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationCustomerBudget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDeploymentFailed": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainExpire": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainMoved": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainPurchase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainRenewal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainUnverified": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "NotificationMonitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationPaymentFailed": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationPreferences": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationStatementOfReasons": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationUsageAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "oauth2Application": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "oauth2Connection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "observabilityConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "observabilityData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "observabilityFunnel": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "observabilityNotebook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "oidcFederationPolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "onDemandBuild": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "onDemandConcurrency": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "openTelemetryEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "optionsAllowlist": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "organization": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "organizationDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "organizationTeam": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "ownEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "pageIntegrity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "passwordProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "passwordProtectionInvoiceItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "paymentMethod": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "permissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "postgres": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "postgresStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "previewDeploymentSuffix": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "privateCloudAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "privateLinkEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "productionAliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "productionShareableLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "project": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectAccessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectAnalyticsSampling": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectAnalyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectCheckRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectDeploymentExpiration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectDeploymentHook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectDeploymentProtectionStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectDomainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectDomainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectDomainVerify": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectEnvVars": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectEnvVarsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectEnvVarsUnownedByIntegration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectFlags": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectFlagsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectFlagsSdkKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectFromV0": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectIntegrationConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectMonitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectOIDCToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectPermissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectRollingRelease": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectRoutes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectSetting": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectSupportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectSupportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectTier": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectTransferOut": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectTransferRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "projectUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "proTrialOnboarding": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "rateLimit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "redis": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "redisStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "remoteCaching": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "repository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "samlConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "schedule": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "seawallConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "secret": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "securityConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "securityPlusConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "sensitiveEnvironmentVariablePolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "setting": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "shareableLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "shareableLinkStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "sharedEnvVarConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "sharedEnvVars": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "sharedEnvVarsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "skewProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "space": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "spaceRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "storeIsLocked": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "storeTokenSetSensitive": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "storeTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "supportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "supportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "team": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamAccessRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamFellowMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamGitExclusivity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamInvite": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamInviteCode": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamInviteLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamJoin": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamMemberMfaStatus": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamMicrofrontends": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamOwnMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamOwnMembershipDisconnectSAML": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "teamTokenInvalidation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "token": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "toolbarComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "trustedIps": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "trustedSources": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "usage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "usageCycle": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "user": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "userConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "userMfaConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "userPreference": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "userSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "v0Chat": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "vcrRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "vercelAppInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "vercelAppInstallationRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "vercelAuth": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "vercelRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "vpcPeeringConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "webAnalytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "webAnalyticsPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "webAuthn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "webhook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "webhook-event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "workflowRunData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." } }, "type": "object", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "productionDeploymentsFastLane": { "type": "boolean", "enum": [ false, true ] }, "protectedSourcemaps": { "type": "boolean", "enum": [ false, true ] }, "protectionBypass": { "additionalProperties": { "oneOf": [ { "properties": { "configurationId": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "integrationId": { "type": "string" }, "scope": { "type": "string", "enum": [ "integration-automation-bypass" ] } }, "required": [ "configurationId", "createdAt", "createdBy", "integrationId", "scope" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "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" }, "scope": { "type": "string", "enum": [ "automation-bypass" ] } }, "required": [ "createdAt", "createdBy", "scope" ], "type": "object" } ] }, "type": "object" }, "protectionConfig": { "properties": { "sandboxUrls": { "properties": { "inheritDeploymentProtection": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" } }, "type": "object" }, "resourceConfig": { "properties": { "buildMachineElasticLastUpdated": { "type": "number" }, "buildMachineElasticReason": { "type": "string", "enum": [ "basic-floor", "build-timeout-failure", "enospc-failure", "enterprise-floor", "high-peak-disk", "high-peak-memory", "long-build-duration", "oom-failure", "short-build-duration", "sustained-high-cpu" ] }, "buildMachineElasticTransition": { "properties": { "algorithmVersion": { "type": "string" }, "at": { "type": "number" }, "direction": { "type": "string", "enum": [ "downgrade", "upgrade" ] } }, "required": [ "algorithmVersion", "at", "direction" ], "type": "object" }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollbackDescription": { "properties": { "createdAt": { "type": "number", "description": "Timestamp of when the rollback was requested." }, "description": { "type": "string", "description": "User-supplied explanation of why they rolled back the project. Limited to 250 characters." }, "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." } }, "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": { "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 }, "gate": { "properties": { "action": { "type": "string", "enum": [ "pause", "rollback" ], "description": "What to do when the gate trips: pause the rollout, or roll it back." }, "checks": { "items": { "properties": { "excludePaths": { "items": { "type": "string" }, "type": "array", "description": "Request paths to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Matched exactly against the request path with any query string removed; no prefix or glob matching. Defaults to `[]` when omitted.", "example": [ "/api/health" ] }, "excludeStatusCodes": { "items": { "type": "number" }, "type": "array", "description": "Response status codes to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Defaults to `[]` when omitted.", "example": [ 503 ] }, "ingestWatermarkSeconds": { "type": "number", "description": "Seconds of ingest lag to allow for: the query's upper bound is `now() - this value`, so the check never reads a window that is still filling. Defaults to `30` when omitted.", "example": 30 }, "minSampleSize": { "type": "number", "description": "Minimum number of requests required in the window before the check can fail. Below this, the check is inconclusive rather than failing, so low-traffic stages don't gate on noise. Defaults to `100` when omitted.", "example": 100 }, "type": { "type": "string", "enum": [ "error-rate-5xx" ], "description": "The metric this check evaluates." } }, "required": [ "type" ], "type": "object", "description": "The checks to evaluate. An empty array means nothing is evaluated." }, "type": "array", "description": "The checks to evaluate. An empty array means nothing is evaluated." }, "dryRun": { "type": "boolean", "enum": [ false, true ], "description": "When true, a tripped gate is only reported — {@link action} is not taken." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether automated gating is enabled for this project's rollouts." }, "failureThreshold": { "type": "number", "description": "How many failing evaluations within {@link windowSize} trip the gate. Defaults to `3` when omitted.", "example": 3 }, "windowSize": { "type": "number", "description": "How many of the most recent evaluations {@link failureThreshold} is counted against. Defaults to `5` when omitted.", "example": 5 } }, "required": [ "action", "checks", "dryRun", "enabled" ], "type": "object", "description": "Automated gating configuration. Omitted (the default) means no gating is configured, which is equivalent to `enabled: false`." }, "stages": { "nullable": true, "items": { "properties": { "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 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 } }, "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." }, "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" } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "rootDirectory": { "nullable": true, "type": "string" }, "sandbox": { "properties": { "failoverRegions": { "items": { "type": "string", "enum": [ "arn1", "bom1", "cdg1", "cle1", "cpt1", "dub1", "fra1", "gru1", "hkg1", "hnd1", "iad1", "icn1", "kix1", "lhr1", "pdx1", "sfo1", "sin1", "syd1", "yul1" ] }, "type": "array" }, "region": { "type": "string", "enum": [ "arn1", "bom1", "cdg1", "cle1", "cpt1", "dub1", "fra1", "gru1", "hkg1", "hnd1", "iad1", "icn1", "kix1", "lhr1", "pdx1", "sfo1", "sin1", "syd1", "yul1" ] } }, "type": "object" }, "security": { "properties": { "attackModeActiveUntil": { "nullable": true, "type": "number" }, "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "firewallConfigVersion": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "managedRules": { "nullable": true, "properties": { "ai_bots": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "traffic_sources": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "vercel_ruleset": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "traffic_sources", "vercel_ruleset" ], "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." }, "rulesets": { "additionalProperties": { "properties": { "action": { "type": "string", "enum": [ "allow", "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "rateLimit": { "nullable": true, "properties": { "action": { "nullable": true, "type": "string", "enum": [ "challenge", "deny", "log", "rate_limit", null ] }, "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "keys": { "items": { "type": "string" }, "type": "array" }, "limit": { "type": "number" }, "window": { "type": "number" } }, "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" } }, "required": [ "action" ], "type": "object" }, "type": "object" } }, "type": "object" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "services": { "items": { "properties": { "framework": { "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "factory-eve", "fastapi", "fasthtml", "fastify", "flask", "gatsby", "go", "gridsome", "h3", "hexo", "hono", "hugo", "hydrogen", "ionic-angular", "ionic-react", "jekyll", "koa", "mastra", "middleman", "nestjs", "nextjs", "nitro", "node", "nuxtjs", "parcel", "polymer", "preact", "python", "react-router", "redwoodjs", "remix", "ruby", "rust", "saber", "sanity", "sanity-v2", "sapper", "scully", "services", "solidstart", "solidstart-1", "stencil", "storybook", "svelte", "sveltekit", "sveltekit-1", "tanstack-start", "tanstack-start-lovable", "umijs", "vite", "vitepress", "vue", "vuepress", "xmcp", "zola" ], "description": "Framework slug, when the service has one (omitted otherwise)." }, "runtime": { "type": "string", "description": "Generic runtime, e.g. 'node' | 'python' | 'go' | 'ruby' | 'rust' (Service.runtime). Omitted for static builds." }, "serviceName": { "type": "string", "description": "Service name from the deployment (Service.name)." }, "serviceType": { "type": "string", "enum": [ "cron", "job", "web", "worker" ], "description": "Service kind (Service.type). Omitted for schemas that do not define one." } }, "required": [ "serviceName" ], "type": "object" }, "type": "array" }, "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" }, "skewProtectionBoundaryAt": { "type": "number" }, "skewProtectionMaxAge": { "type": "number" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "canceledAt": { "type": "number" }, "dataReceivedAt": { "type": "number", "description": "When the first free (not Speed Insights Plus) production data point was observed, in ms. Set once by subscriber-analytics-events; projects that already had data before this field shipped get it backfilled on their next batch, so it reads \"first free data point observed\", not necessarily \"first ever\"." }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "ssoProtection": { "nullable": true, "properties": { "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] }, "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] } }, "required": [ "deploymentType" ], "type": "object" }, "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" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "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": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "dest": { "type": "string" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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 ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "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": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ] }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "url": { "type": "string" }, "userId": { "type": "string", "description": "Present for user creators; omitted for app/integration/system creators." }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url" ], "type": "object" }, "type": "object" }, "tier": { "type": "string", "enum": [ "priority" ] }, "tracing": { "properties": { "domains": { "type": "string" }, "ignorePaths": { "items": { "type": "string" }, "type": "array" }, "samplingRules": { "items": { "properties": { "destination": { "type": "string", "enum": [ "external", "internal" ], "description": "Which tracing destination this rule applies to. `internal` is the hidden Vercel production-tracing drain (internal delivery); `external` is any customer-configured drain. Derived from the owning drain's delivery type when project tracing is computed; absent on configs persisted before this field existed." }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "rate": { "type": "number" }, "requestPath": { "type": "string" } }, "required": [ "rate" ], "type": "object" }, "type": "array" } }, "type": "object" }, "transferCompletedAt": { "type": "number" }, "transferredFromAccountId": { "type": "string" }, "transferStartedAt": { "type": "number" }, "transferToAccountId": { "type": "string" }, "trustedIps": { "nullable": true, "oneOf": [ { "properties": { "addresses": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", "production" ] }, "protectionMode": { "type": "string", "enum": [ "additional", "exclusive" ] } }, "required": [ "addresses", "deploymentType", "protectionMode" ], "type": "object" }, { "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", "production" ] } }, "required": [ "deploymentType" ], "type": "object" } ] }, "trustedSources": { "nullable": true, "properties": { "enableVercelCiSameRepository": { "type": "boolean", "enum": [ false, true ], "description": "Allow same-team Vercel CI access to preview and production deployments built from the CI run's repository, using the deployment source rather than the current project repository link. Defaults to enabled when not stored; omitted or null Trusted Sources updates preserve the stored value." }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" }, "label": { "type": "string" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" }, "projects": { "additionalProperties": { "properties": { "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "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. An empty array denies all access and is only allowed for the current project." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets. An empty array denies all access and is only allowed for the current project." }, "label": { "type": "string" } }, "type": "object" }, "type": "object" } }, "type": "object" }, "updatedAt": { "type": "number" }, "usageStatus": { "properties": { "bypassThrottleUntil": { "type": "number", "description": "Timestamp until which throttling is bypassed (project pays list rates for overage)." }, "exceededAllowanceUntil": { "type": "number", "description": "Timestamp until which the project has exceeded its CDN allowance." }, "kind": { "type": "string", "enum": [ "flat" ], "description": "Billing mode. Always 'flat' for flat-rate projects." }, "teamThrottled": { "type": "boolean", "enum": [ false, true ], "description": "Synced from `team.billing.usageStatus.throttled`. When `true`, the team has throttled all of its projects regardless of `throttled`. The effective throttle the CDN enforces is `throttled || teamThrottled`." }, "throttled": { "type": "boolean", "enum": [ false, true ], "description": "Per-project throttle, set explicitly for this project (e.g. via the per-project Flat Rate CDN endpoint)." } }, "required": [ "kind" ], "type": "object" }, "v0": { "type": "boolean", "enum": [ false, true ] }, "v0Created": { "type": "boolean", "enum": [ false, true ] }, "webAnalytics": { "properties": { "canceledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] }, "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "accountId", "alias", "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." }, "404": { "description": "" }, "410": { "description": "" } }, "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." }, "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": { "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." }, "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." }, "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." }, "routing": { "items": { "properties": { "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." }, "group": { "type": "string", "description": "Group name for the paths." }, "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." }, "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." }, "version": { "type": "string", "enum": [ "1" ], "description": "The version of the microfrontends config schema." } }, "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": "" }, "410": { "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." }, "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": { "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." }, "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." }, "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." }, "routing": { "items": { "properties": { "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." }, "group": { "type": "string", "description": "Group name for the paths." }, "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." }, "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." }, "version": { "type": "string", "enum": [ "1" ], "description": "The version of the microfrontends config schema." } }, "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": "" }, "410": { "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": { "createdAt": { "type": "number" }, "enablePolyrepoBranchRouting": { "type": "boolean", "enum": [ false, true ] }, "fallbackEnvironment": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "updatedAt": { "type": "number" } }, "required": [ "createdAt", "enablePolyrepoBranchRouting", "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." }, "404": { "description": "" }, "410": { "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": [ "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": [ "observability" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "disabledProjects": { "items": { "properties": { "disabledAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" } }, "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": "" }, "410": { "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.observability.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": [ "observability" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "disabledAt": { "type": "number" }, "id": { "type": "string" } }, "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": "" }, "410": { "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.observability.updateObservabilityConfigurationProject({\n projectIdOrName: \"\",\n teamId: \"team_1a2b3c4d5e6f7g8h9i0j1k2l\",\n slug: \"my-team-url-slug\",\n });\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/observability/query": { "post": { "description": "", "operationId": "createObservabilityQuery", "security": [], "tags": [], "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." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "408": { "description": "" }, "410": { "description": "" }, "413": { "description": "" }, "422": { "description": "" }, "500": { "description": "" }, "503": { "description": "" } }, "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "metric", "scope" ], "properties": { "metric": { "type": "string", "description": "Metric id" }, "scope": { "type": "object", "description": "Owner or project scope for the query" }, "aggregation": { "type": "string", "description": "Aggregation function to apply. Some aggregations require a dimension: use /, for example unique/visitor_id." }, "groupBy": { "type": "array", "items": { "type": "string" }, "description": "Dimensions to group results by. JSON dimensions support nested refs, for example event_data/checkout_step. Nested keys containing characters that OData cannot parse as an identifier, such as '-', spaces, quotes, or '/', must be wrapped in single quotes (escape embedded single quotes by doubling them), for example flags/'enable-comments-view' or event_data/'some property''s/value'." }, "filter": { "type": "string", "description": "Filter to apply to the query. JSON dimensions support nested refs, for example event_data/checkout_step eq 'payment'. Nested keys containing characters that OData cannot parse as an identifier, such as '-', spaces, quotes, or '/', must be wrapped in single quotes (escape embedded single quotes by doubling them), for example flags/'enable-comments-view' eq true or event_data/'some property''s/value' eq true." }, "limit": { "type": "number", "description": "Maximum number of results" }, "orderBy": { "type": "string", "description": "Rollup column to order grouped results by. Use the generated rollup key for the requested metric and aggregation. Defaults to the query engine count rollup." }, "orderDirection": { "type": "string", "enum": [ "asc", "desc" ], "description": "Direction to order grouped results by. Defaults to desc." }, "granularity": { "type": "object", "description": "Time bucket size" }, "startTime": { "type": "string", "description": "Start timestamp" }, "endTime": { "type": "string", "description": "End timestamp" }, "bucketTimezone": { "type": "string", "description": "IANA timezone (e.g. Europe/Paris) used only to align calendar buckets (1d/1mo) to that zone's day/month boundaries. startTime/endTime and all output timestamps are always UTC. No effect on sub-day granularities." } }, "additionalProperties": true } } } }, "x-codeSamples": [ { "lang": "typescript", "label": "createObservabilityQuery", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n const result = await vercel.createObservabilityQuery();\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/observability/schema": { "get": { "description": "", "operationId": "getObservabilitySchema", "security": [], "tags": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "metrics": { "items": { "properties": { "description": { "type": "string" }, "id": { "type": "string" } }, "required": [ "description", "id" ], "type": "object" }, "type": "array" } }, "required": [ "metrics" ], "type": "object" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" } }, "parameters": [], "x-codeSamples": [ { "lang": "typescript", "label": "getObservabilitySchema", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n const result = await vercel.getObservabilitySchema();\n\n console.log(result);\n}\n\nrun();" } ] } }, "/v2/observability/schema/{metricId}": { "get": { "description": "", "operationId": "getObservabilitySchemaByMetricId", "security": [], "tags": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "items": { "properties": { "aggregations": { "items": { "type": "string" }, "type": "array" }, "defaultAggregation": { "type": "string" }, "description": { "type": "string" }, "dimensions": { "items": { "properties": { "description": { "type": "string" }, "label": { "type": "string" }, "name": { "type": "string" } }, "required": [ "label", "name" ], "type": "object" }, "type": "array" }, "id": { "type": "string" }, "unit": { "type": "string" } }, "required": [ "aggregations", "defaultAggregation", "description", "dimensions", "id", "unit" ], "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." }, "404": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "metricId", "in": "path", "required": true, "schema": { "type": "string" } } ], "x-codeSamples": [ { "lang": "typescript", "label": "getObservabilitySchemaByMetricId", "source": "import { Vercel } from \"@vercel/sdk\";\n\nconst vercel = new Vercel();\n\nasync function run() {\n const result = await vercel.getObservabilitySchemaByMetricId({\n metricId: \"\",\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" }, "computedProjectRole": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ], "description": "Role of this user in the project.", "example": "ADMIN" }, "createdAt": { "type": "number", "description": "Timestamp in milliseconds when this member was added.", "example": 1588720733602 }, "email": { "type": "string", "description": "The email of this member.", "example": "jane.doe@example.com" }, "name": { "type": "string", "description": "The name of this user.", "example": "Jane Doe" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ], "description": "Role of this user in the project.", "example": "ADMIN" }, "teamRole": { "type": "string", "enum": [ "BILLING", "CONTRIBUTOR", "DEVELOPER", "MEMBER", "OWNER", "SECURITY", "VIEWER", "VIEWER_FOR_PLUS" ], "description": "The role of this user in the team.", "example": "CONTRIBUTOR" }, "uid": { "type": "string", "description": "The ID of this user.", "example": "zTuNVUXEAvvnNN3IaqinkyMw" }, "username": { "type": "string", "description": "The unique username of this user.", "example": "jane-doe" } }, "required": [ "computedProjectRole", "createdAt", "email", "role", "teamRole", "uid", "username" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "count": { "type": "number", "description": "Amount of items in the current page.", "example": 20 }, "hasNext": { "type": "boolean", "enum": [ false, true ] }, "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." }, "404": { "description": "" }, "410": { "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" } }, { "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." }, "404": { "description": "" }, "410": { "description": "" }, "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." }, "404": { "description": "" }, "410": { "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" } }, { "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": { "diffCount": { "type": "number" }, "routes": { "items": { "properties": { "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." }, "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "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." }, "route": { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "continue": { "type": "boolean", "enum": [ false, true ] }, "dest": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "important": { "type": "boolean", "enum": [ false, true ] }, "locale": { "properties": { "cookie": { "type": "string" }, "redirect": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "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." }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "override": { "type": "boolean", "enum": [ false, true ] }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "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, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`)." }, "src": { "type": "string" }, "status": { "type": "number" }, "statusCode": { "type": "number" }, "transforms": { "items": { "oneOf": [ { "properties": { "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "routeType": { "type": "string", "enum": [ "redirect", "rewrite", "set_status", "transform" ], "description": "Computed route type based on the route configuration. Only present in API responses, not stored in S3." }, "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." }, "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." } }, "required": [ "id", "name", "route" ], "type": "object", "description": "A routing rule with metadata for project-level routing." }, "type": "array" }, "version": { "properties": { "alias": { "type": "string", "description": "The staging alias for previewing this version." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "id": { "type": "string", "description": "Unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "diffCount", "routes", "version" ], "type": "object" }, { "properties": { "routes": { "items": { "properties": { "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." }, "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "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." }, "route": { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "continue": { "type": "boolean", "enum": [ false, true ] }, "dest": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "important": { "type": "boolean", "enum": [ false, true ] }, "locale": { "properties": { "cookie": { "type": "string" }, "redirect": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "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." }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "override": { "type": "boolean", "enum": [ false, true ] }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "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, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`)." }, "src": { "type": "string" }, "status": { "type": "number" }, "statusCode": { "type": "number" }, "transforms": { "items": { "oneOf": [ { "properties": { "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "routeType": { "type": "string", "enum": [ "redirect", "rewrite", "set_status", "transform" ], "description": "Computed route type based on the route configuration. Only present in API responses, not stored in S3." }, "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." }, "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." } }, "required": [ "id", "name", "route" ], "type": "object", "description": "A routing rule with metadata for project-level routing." }, "type": "array" }, "version": { "properties": { "alias": { "type": "string", "description": "The staging alias for previewing this version." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "id": { "type": "string", "description": "Unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "routes", "version" ], "type": "object" }, { "properties": { "limit": { "properties": { "currentRoutes": { "type": "number" }, "maxRoutes": { "type": "number" } }, "required": [ "currentRoutes", "maxRoutes" ], "type": "object" }, "routes": { "items": { "properties": { "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." }, "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "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." }, "route": { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "continue": { "type": "boolean", "enum": [ false, true ] }, "dest": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "important": { "type": "boolean", "enum": [ false, true ] }, "locale": { "properties": { "cookie": { "type": "string" }, "redirect": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "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." }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "override": { "type": "boolean", "enum": [ false, true ] }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "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, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`)." }, "src": { "type": "string" }, "status": { "type": "number" }, "statusCode": { "type": "number" }, "transforms": { "items": { "oneOf": [ { "properties": { "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "routeType": { "type": "string", "enum": [ "redirect", "rewrite", "set_status", "transform" ], "description": "Computed route type based on the route configuration. Only present in API responses, not stored in S3." }, "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." }, "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." } }, "required": [ "id", "name", "route" ], "type": "object", "description": "A routing rule with metadata for project-level routing." }, "type": "array" }, "version": { "properties": { "alias": { "type": "string", "description": "The staging alias for previewing this version." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "id": { "type": "string", "description": "Unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "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": "" }, "410": { "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": { "alias": { "type": "string", "description": "The staging alias for previewing this version." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "id": { "type": "string", "description": "Unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." } }, "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": "" }, "409": { "description": "" }, "410": { "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", "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": { "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." }, "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "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." }, "route": { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "continue": { "type": "boolean", "enum": [ false, true ] }, "dest": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "important": { "type": "boolean", "enum": [ false, true ] }, "locale": { "properties": { "cookie": { "type": "string" }, "redirect": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "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." }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "override": { "type": "boolean", "enum": [ false, true ] }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "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, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`)." }, "src": { "type": "string" }, "status": { "type": "number" }, "statusCode": { "type": "number" }, "transforms": { "items": { "oneOf": [ { "properties": { "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "routeType": { "type": "string", "enum": [ "redirect", "rewrite", "set_status", "transform" ] }, "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." }, "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." } }, "required": [ "id", "name", "route" ], "type": "object" }, "version": { "properties": { "alias": { "type": "string", "description": "The staging alias for previewing this version." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "id": { "type": "string", "description": "Unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." } }, "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." }, "404": { "description": "" }, "409": { "description": "" }, "410": { "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": [ "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": { "alias": { "type": "string", "description": "The staging alias for previewing this version." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "id": { "type": "string", "description": "Unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." } }, "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": "" }, "409": { "description": "" }, "410": { "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": [ "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": { "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." }, "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "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." }, "route": { "properties": { "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "continue": { "type": "boolean", "enum": [ false, true ] }, "dest": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." }, "service": { "type": "string" }, "type": { "type": "string", "enum": [ "service" ], "description": "Optional explicit format marker. The destination is identified by the presence of `service`, so `type` is no longer required." } }, "required": [ "service" ], "type": "object" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "important": { "type": "boolean", "enum": [ false, true ] }, "locale": { "properties": { "cookie": { "type": "string" }, "redirect": { "additionalProperties": { "type": "string" }, "type": "object" } }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "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." }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "override": { "type": "boolean", "enum": [ false, true ] }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] }, "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, the string forms are converted to their canonical forms (`src`, `dest`, `status`) and stripped from the route object. `destination` may also be a service-targeted object, in which case routing is delegated into the named service's internal route table and the object is preserved as-is (not folded into `dest`)." }, "src": { "type": "string" }, "status": { "type": "number" }, "statusCode": { "type": "number" }, "transforms": { "items": { "oneOf": [ { "properties": { "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" }, "op": { "type": "string", "enum": [ "set" ] }, "type": { "type": "string", "enum": [ "request.path" ] } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "routeType": { "type": "string", "enum": [ "redirect", "rewrite", "set_status", "transform" ] }, "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." }, "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." } }, "required": [ "id", "name", "route" ], "type": "object" }, "version": { "properties": { "alias": { "type": "string", "description": "The staging alias for previewing this version." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "id": { "type": "string", "description": "Unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." } }, "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": "" }, "409": { "description": "" }, "410": { "description": "" }, "500": { "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": { "error": { "type": "string" }, "route": { "properties": { "actions": { "items": { "properties": { "dest": { "type": "string" }, "headers": { "items": { "properties": { "key": { "type": "string" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "value": { "type": "string" } }, "required": [ "key", "op" ], "type": "object" }, "type": "array" }, "status": { "type": "number" }, "subType": { "type": "string", "enum": [ "response-headers", "transform-request-header", "transform-request-query" ] }, "type": { "type": "string", "enum": [ "modify", "redirect", "rewrite", "set-status" ] } }, "required": [ "type" ], "type": "object" }, "type": "array" }, "conditions": { "items": { "properties": { "field": { "type": "string", "enum": [ "cookie", "header", "host", "query" ] }, "key": { "type": "string" }, "missing": { "type": "boolean", "enum": [ false, true ] }, "operator": { "type": "string", "enum": [ "contains", "eq", "exists", "re" ] }, "value": { "type": "string" } }, "required": [ "field", "missing", "operator" ], "type": "object" }, "type": "array" }, "description": { "type": "string" }, "name": { "type": "string" }, "pathCondition": { "properties": { "syntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ] }, "value": { "type": "string" } }, "required": [ "syntax", "value" ], "type": "object" } }, "required": [ "actions", "description", "name", "pathCondition" ], "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": "" }, "408": { "description": "" }, "410": { "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": { "alias": { "type": "string", "description": "The staging alias for previewing this version." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "id": { "type": "string", "description": "Unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." } }, "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." }, "404": { "description": "" }, "410": { "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" } } ], "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": { "alias": { "type": "string", "description": "The staging alias for previewing this version." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "id": { "type": "string", "description": "Unique identifier for the version." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." } }, "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": "" }, "409": { "description": "" }, "410": { "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", "dns-01", "http", 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 ] } ] }, "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": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "dest": { "type": "string" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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 ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "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": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ] }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "url": { "type": "string" }, "userId": { "type": "string", "description": "Present for user creators; omitted for app/integration/system creators." }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "preview", "production" ] }, "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": [ "PREVIEW", "PRODUCTION", "STAGING" ] } }, "required": [ "deployment", "domain", "environment", "target" ], "type": "object" }, "type": "array" }, "analytics": { "properties": { "canceledAt": { "nullable": true, "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "id": { "type": "string" }, "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 ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "creator": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "via": { "nullable": true, "oneOf": [ { "properties": { "app": { "properties": { "clientId": { "type": "string", "description": "The protocol-facing OAuth client ID. This may differ from {@link id} when Client ID Metadata Documents (CIMD) are used." }, "id": { "type": "string", "description": "The internal ID of the Vercel App backing this principal." } }, "required": [ "id" ], "type": "object" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "app", "type" ], "type": "object", "description": "Set when a Vercel App or Integration acts on behalf of a {@link User}. Captures user-consented OAuth delegation that the ACL layer may inspect to evaluate scope restrictions. This is NOT for impersonation or token-exchange provenance — those live on `auth.token`, not on the principal." }, { "properties": { "integration": { "properties": { "configurationId": { "type": "string" }, "integrationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" }, "type": { "type": "string", "enum": [ "integration" ] } }, "required": [ "integration", "type" ], "type": "object", "description": "Set when a Vercel App or Integration acts on behalf of a {@link User}. Captures user-consented OAuth delegation that the ACL layer may inspect to evaluate scope restrictions. This is NOT for impersonation or token-exchange provenance — those live on `auth.token`, not on the principal." } ] }, "user": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "type", "user", "via" ], "type": "object" }, { "properties": { "app": { "properties": { "clientId": { "type": "string", "description": "The protocol-facing OAuth client ID. This may differ from {@link id} when Client ID Metadata Documents (CIMD) are used." }, "id": { "type": "string", "description": "The internal ID of the Vercel App backing this principal." } }, "required": [ "id" ], "type": "object" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "app", "type" ], "type": "object" }, { "properties": { "integration": { "properties": { "configurationId": { "type": "string" }, "integrationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" }, "type": { "type": "string", "enum": [ "integration" ] } }, "required": [ "integration", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object" } ] }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "deploymentExpiration": { "properties": { "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." }, "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview 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." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." } }, "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 ] }, "env": { "items": { "properties": { "comment": { "type": "string" }, "configurationId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-read-write-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-store-id" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-webhook-public-key" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-prisma-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-user" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-host" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-password" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-database" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "integration-store-secret" ] } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "string" }, "type": { "type": "string", "enum": [ "flags-connection-string" ] } }, "required": [ "projectId", "type" ], "type": "object" } ] }, "createdAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "gitBranch": { "type": "string" }, "id": { "type": "string" }, "internalContentHint": { "nullable": true, "properties": { "encryptedValue": { "type": "string", "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." }, "type": { "type": "string", "enum": [ "flags-secret" ] } }, "required": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "key": { "type": "string" }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "secret", "sensitive", "system" ] }, "updatedAt": { "type": "number" }, "updatedBy": { "nullable": true, "type": "string" }, "value": { "type": "string" }, "visibility": { "type": "string", "enum": [ "config", "secret" ], "description": "User-facing config/secret model. When set, authoritative for new code paths. Legacy rows omit this field and callers fall back to existing `type` behavior." }, "vsmValue": { "type": "string" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "factory-eve", "fastapi", "fasthtml", "fastify", "flask", "gatsby", "go", "gridsome", "h3", "hexo", "hono", "hugo", "hydrogen", "ionic-angular", "ionic-react", "jekyll", "koa", "mastra", "middleman", "nestjs", "nextjs", "nitro", "node", "nuxtjs", "parcel", "polymer", "preact", "python", "react-router", "redwoodjs", "remix", "ruby", "rust", "saber", "sanity", "sanity-v2", "sapper", "scully", "services", "solidstart", "solidstart-1", "stencil", "storybook", "svelte", "sveltekit", "sveltekit-1", "tanstack-start", "tanstack-start-lovable", "umijs", "vite", "vitepress", "vue", "vuepress", "xmcp", "zola", null ] }, "gitComments": { "properties": { "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" }, "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitProviderOptions": { "properties": { "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." }, "createDeployments": { "type": "string", "enum": [ "disabled", "enabled" ], "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 - `true`: disable repository-dispatch events for this project (explicit override of the team setting). - `false`: enable repository-dispatch events for this project (explicit override of the team setting). - absent: inherit from `team.disableRepositoryDispatchEvents`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "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`." } }, "required": [ "createDeployments" ], "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "expiry": { "type": "number" }, "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "type": { "type": "string", "enum": [ "header" ] }, "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" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "latestDeployments": { "items": { "properties": { "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": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "dest": { "type": "string" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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 ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "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": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ] }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "url": { "type": "string" }, "userId": { "type": "string", "description": "Present for user creators; omitted for app/integration/system creators." }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url" ], "type": "object" }, "type": "array" }, "link": { "oneOf": [ { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github-limited" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "host": { "type": "string" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github-custom-host" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "productionBranch": { "type": "string" }, "projectId": { "type": "string" }, "projectName": { "type": "string" }, "projectNamespace": { "type": "string" }, "projectNameWithNamespace": { "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "gitlab" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "type": "object" }, { "properties": { "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" }, "name": { "type": "string" }, "owner": { "type": "string" }, "productionBranch": { "type": "string" }, "slug": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "updatedAt": { "type": "number" }, "uuid": { "type": "string" }, "workspaceUuid": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "vercel" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "repoId", "type" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "v0" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "repoId", "type" ], "type": "object" }, { "properties": { "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" }, "owner": { "type": "string", "description": "Owner (namespace) slug, e.g. `acme`." }, "ownerId": { "type": "string", "description": "Origin namespace id (`ns_…`) of the owner." }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "owner", "ownerId", "productionBranch", "repo", "repoId", "type" ], "type": "object" } ] }, "live": { "type": "boolean", "enum": [ false, true ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "global", "team" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "outputDirectory": { "nullable": true, "type": "string" }, "passport": { "nullable": true, "properties": { "connectorId": { "type": "string" }, "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] } }, "required": [ "connectorId", "deploymentType" ], "type": "object" }, "passwordProtection": { "nullable": true, "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "resourceConfig": { "properties": { "buildMachineElasticLastUpdated": { "type": "number" }, "buildMachineElasticReason": { "type": "string", "enum": [ "basic-floor", "build-timeout-failure", "enospc-failure", "enterprise-floor", "high-peak-disk", "high-peak-memory", "long-build-duration", "oom-failure", "short-build-duration", "sustained-high-cpu" ] }, "buildMachineElasticTransition": { "properties": { "algorithmVersion": { "type": "string" }, "at": { "type": "number" }, "direction": { "type": "string", "enum": [ "downgrade", "upgrade" ] } }, "required": [ "algorithmVersion", "at", "direction" ], "type": "object" }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollingRelease": { "nullable": true, "properties": { "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 }, "gate": { "properties": { "action": { "type": "string", "enum": [ "pause", "rollback" ], "description": "What to do when the gate trips: pause the rollout, or roll it back." }, "checks": { "items": { "properties": { "excludePaths": { "items": { "type": "string" }, "type": "array", "description": "Request paths to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Matched exactly against the request path with any query string removed; no prefix or glob matching. Defaults to `[]` when omitted.", "example": [ "/api/health" ] }, "excludeStatusCodes": { "items": { "type": "number" }, "type": "array", "description": "Response status codes to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Defaults to `[]` when omitted.", "example": [ 503 ] }, "ingestWatermarkSeconds": { "type": "number", "description": "Seconds of ingest lag to allow for: the query's upper bound is `now() - this value`, so the check never reads a window that is still filling. Defaults to `30` when omitted.", "example": 30 }, "minSampleSize": { "type": "number", "description": "Minimum number of requests required in the window before the check can fail. Below this, the check is inconclusive rather than failing, so low-traffic stages don't gate on noise. Defaults to `100` when omitted.", "example": 100 }, "type": { "type": "string", "enum": [ "error-rate-5xx" ], "description": "The metric this check evaluates." } }, "required": [ "type" ], "type": "object", "description": "The checks to evaluate. An empty array means nothing is evaluated." }, "type": "array", "description": "The checks to evaluate. An empty array means nothing is evaluated." }, "dryRun": { "type": "boolean", "enum": [ false, true ], "description": "When true, a tripped gate is only reported — {@link action} is not taken." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether automated gating is enabled for this project's rollouts." }, "failureThreshold": { "type": "number", "description": "How many failing evaluations within {@link windowSize} trip the gate. Defaults to `3` when omitted.", "example": 3 }, "windowSize": { "type": "number", "description": "How many of the most recent evaluations {@link failureThreshold} is counted against. Defaults to `5` when omitted.", "example": 5 } }, "required": [ "action", "checks", "dryRun", "enabled" ], "type": "object", "description": "Automated gating configuration. Omitted (the default) means no gating is configured, which is equivalent to `enabled: false`." }, "stages": { "nullable": true, "items": { "properties": { "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 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 } }, "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." }, "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" } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "rootDirectory": { "nullable": true, "type": "string" }, "security": { "properties": { "attackModeActiveUntil": { "nullable": true, "type": "number" }, "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "firewallConfigVersion": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallRoutes": { "items": { "properties": { "dest": { "type": "string" }, "handle": { "type": "string", "enum": [ "finalize", "init" ] }, "has": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "domain_environment", "environment", "header", "headers", "host", "initial_request_path", "ip_address", "method", "path", "protocol", "query", "region", "scheme", "trusted_source" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "list": { "type": "string" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type" ], "type": "object" }, "type": "array" }, "missing": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "domain_environment", "environment", "header", "headers", "host", "initial_request_path", "ip_address", "method", "path", "protocol", "query", "region", "scheme", "trusted_source" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "list": { "type": "string" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type" ], "type": "object" }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "erl": { "properties": { "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "keys": { "items": { "type": "string" }, "type": "array" }, "limit": { "type": "number" }, "window": { "type": "number" } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "rule_id": { "type": "string" }, "ttl": { "type": "number" } }, "required": [ "action", "rule_id" ], "type": "object" }, "src": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "list": { "type": "string" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] }, "status": { "type": "number" }, "tierRequirement": { "type": "string", "enum": [ "priority" ] }, "transforms": { "items": { "properties": { "args": { "type": "string" }, "op": { "type": "string", "enum": [ "append" ] }, "target": { "properties": { "key": { "type": "string" } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers" ] } }, "required": [ "args", "op", "target", "type" ], "type": "object" }, "type": "array" } }, "type": "object" }, "type": "array" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "managedRules": { "nullable": true, "properties": { "ai_bots": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "traffic_sources": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "vercel_ruleset": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "traffic_sources", "vercel_ruleset" ], "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." }, "requestLogsKey": { "items": { "type": "string" }, "type": "array" }, "rulesets": { "additionalProperties": { "properties": { "action": { "type": "string", "enum": [ "allow", "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "rateLimit": { "nullable": true, "properties": { "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "keys": { "items": { "type": "string" }, "type": "array" }, "limit": { "type": "number" }, "window": { "type": "number" } }, "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" } }, "required": [ "action" ], "type": "object" }, "type": "object" } }, "type": "object" }, "serverlessFunctionRegion": { "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "canceledAt": { "type": "number" }, "dataReceivedAt": { "type": "number", "description": "When the first free (not Speed Insights Plus) production data point was observed, in ms. Set once by subscriber-analytics-events; projects that already had data before this field shipped get it backfilled on their next batch, so it reads \"first free data point observed\", not necessarily \"first ever\"." }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "ssoProtection": { "nullable": true, "properties": { "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] }, "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] } }, "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 ] } ] }, "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": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "dest": { "type": "string" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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 ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "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": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ] }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "url": { "type": "string" }, "userId": { "type": "string", "description": "Present for user creators; omitted for app/integration/system creators." }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url" ], "type": "object" }, "type": "object" }, "tier": { "type": "string", "enum": [ "priority" ] }, "transferCompletedAt": { "type": "number" }, "transferredFromAccountId": { "type": "string" }, "transferStartedAt": { "type": "number" }, "transferToAccountId": { "type": "string" }, "trustedSources": { "nullable": true, "properties": { "enableVercelCiSameRepository": { "type": "boolean", "enum": [ false, true ], "description": "Allow same-team Vercel CI access to preview and production deployments built from the CI run's repository, using the deployment source rather than the current project repository link. Defaults to enabled when not stored; omitted or null Trusted Sources updates preserve the stored value." }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" }, "label": { "type": "string" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" }, "projects": { "additionalProperties": { "properties": { "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "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. An empty array denies all access and is only allowed for the current project." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets. An empty array denies all access and is only allowed for the current project." }, "label": { "type": "string" } }, "type": "object" }, "type": "object" } }, "type": "object" }, "updatedAt": { "type": "number" }, "webAnalytics": { "properties": { "canceledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] }, "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "accountId", "alias", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig", "serverlessFunctionRegion" ], "type": "object" }, "type": "array" }, { "properties": { "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" } ] }, "projects": { "items": { "properties": { "accountId": { "type": "string" }, "alias": { "items": { "properties": { "configuredBy": { "nullable": true, "type": "string", "enum": [ "A", "CNAME", "dns-01", "http", 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 ] } ] }, "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": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "dest": { "type": "string" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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 ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "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": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ] }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "url": { "type": "string" }, "userId": { "type": "string", "description": "Present for user creators; omitted for app/integration/system creators." }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "preview", "production" ] }, "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": [ "PREVIEW", "PRODUCTION", "STAGING" ] } }, "required": [ "deployment", "domain", "environment", "target" ], "type": "object" }, "type": "array" }, "analytics": { "properties": { "canceledAt": { "nullable": true, "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "id": { "type": "string" }, "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 ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "creator": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "via": { "nullable": true, "oneOf": [ { "properties": { "app": { "properties": { "clientId": { "type": "string", "description": "The protocol-facing OAuth client ID. This may differ from {@link id} when Client ID Metadata Documents (CIMD) are used." }, "id": { "type": "string", "description": "The internal ID of the Vercel App backing this principal." } }, "required": [ "id" ], "type": "object" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "app", "type" ], "type": "object", "description": "Set when a Vercel App or Integration acts on behalf of a {@link User}. Captures user-consented OAuth delegation that the ACL layer may inspect to evaluate scope restrictions. This is NOT for impersonation or token-exchange provenance — those live on `auth.token`, not on the principal." }, { "properties": { "integration": { "properties": { "configurationId": { "type": "string" }, "integrationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" }, "type": { "type": "string", "enum": [ "integration" ] } }, "required": [ "integration", "type" ], "type": "object", "description": "Set when a Vercel App or Integration acts on behalf of a {@link User}. Captures user-consented OAuth delegation that the ACL layer may inspect to evaluate scope restrictions. This is NOT for impersonation or token-exchange provenance — those live on `auth.token`, not on the principal." } ] }, "user": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "type", "user", "via" ], "type": "object" }, { "properties": { "app": { "properties": { "clientId": { "type": "string", "description": "The protocol-facing OAuth client ID. This may differ from {@link id} when Client ID Metadata Documents (CIMD) are used." }, "id": { "type": "string", "description": "The internal ID of the Vercel App backing this principal." } }, "required": [ "id" ], "type": "object" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "app", "type" ], "type": "object" }, { "properties": { "integration": { "properties": { "configurationId": { "type": "string" }, "integrationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" }, "type": { "type": "string", "enum": [ "integration" ] } }, "required": [ "integration", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object" } ] }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "deploymentExpiration": { "properties": { "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." }, "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview 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." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." } }, "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 ] }, "env": { "items": { "properties": { "comment": { "type": "string" }, "configurationId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-read-write-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-store-id" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-webhook-public-key" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-prisma-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-user" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-host" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-password" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-database" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "integration-store-secret" ] } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "string" }, "type": { "type": "string", "enum": [ "flags-connection-string" ] } }, "required": [ "projectId", "type" ], "type": "object" } ] }, "createdAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "gitBranch": { "type": "string" }, "id": { "type": "string" }, "internalContentHint": { "nullable": true, "properties": { "encryptedValue": { "type": "string", "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." }, "type": { "type": "string", "enum": [ "flags-secret" ] } }, "required": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "key": { "type": "string" }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "secret", "sensitive", "system" ] }, "updatedAt": { "type": "number" }, "updatedBy": { "nullable": true, "type": "string" }, "value": { "type": "string" }, "visibility": { "type": "string", "enum": [ "config", "secret" ], "description": "User-facing config/secret model. When set, authoritative for new code paths. Legacy rows omit this field and callers fall back to existing `type` behavior." }, "vsmValue": { "type": "string" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "factory-eve", "fastapi", "fasthtml", "fastify", "flask", "gatsby", "go", "gridsome", "h3", "hexo", "hono", "hugo", "hydrogen", "ionic-angular", "ionic-react", "jekyll", "koa", "mastra", "middleman", "nestjs", "nextjs", "nitro", "node", "nuxtjs", "parcel", "polymer", "preact", "python", "react-router", "redwoodjs", "remix", "ruby", "rust", "saber", "sanity", "sanity-v2", "sapper", "scully", "services", "solidstart", "solidstart-1", "stencil", "storybook", "svelte", "sveltekit", "sveltekit-1", "tanstack-start", "tanstack-start-lovable", "umijs", "vite", "vitepress", "vue", "vuepress", "xmcp", "zola", null ] }, "gitComments": { "properties": { "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" }, "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitProviderOptions": { "properties": { "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." }, "createDeployments": { "type": "string", "enum": [ "disabled", "enabled" ], "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 - `true`: disable repository-dispatch events for this project (explicit override of the team setting). - `false`: enable repository-dispatch events for this project (explicit override of the team setting). - absent: inherit from `team.disableRepositoryDispatchEvents`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "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`." } }, "required": [ "createDeployments" ], "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "expiry": { "type": "number" }, "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "type": { "type": "string", "enum": [ "header" ] }, "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" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "latestDeployments": { "items": { "properties": { "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": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "dest": { "type": "string" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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 ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "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": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ] }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "url": { "type": "string" }, "userId": { "type": "string", "description": "Present for user creators; omitted for app/integration/system creators." }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url" ], "type": "object" }, "type": "array" }, "link": { "oneOf": [ { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github-limited" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "host": { "type": "string" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github-custom-host" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "productionBranch": { "type": "string" }, "projectId": { "type": "string" }, "projectName": { "type": "string" }, "projectNamespace": { "type": "string" }, "projectNameWithNamespace": { "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "gitlab" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "type": "object" }, { "properties": { "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" }, "name": { "type": "string" }, "owner": { "type": "string" }, "productionBranch": { "type": "string" }, "slug": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "updatedAt": { "type": "number" }, "uuid": { "type": "string" }, "workspaceUuid": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "vercel" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "repoId", "type" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "v0" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "repoId", "type" ], "type": "object" }, { "properties": { "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" }, "owner": { "type": "string", "description": "Owner (namespace) slug, e.g. `acme`." }, "ownerId": { "type": "string", "description": "Origin namespace id (`ns_…`) of the owner." }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "owner", "ownerId", "productionBranch", "repo", "repoId", "type" ], "type": "object" } ] }, "live": { "type": "boolean", "enum": [ false, true ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "global", "team" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "outputDirectory": { "nullable": true, "type": "string" }, "passport": { "nullable": true, "properties": { "connectorId": { "type": "string" }, "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] } }, "required": [ "connectorId", "deploymentType" ], "type": "object" }, "passwordProtection": { "nullable": true, "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "resourceConfig": { "properties": { "buildMachineElasticLastUpdated": { "type": "number" }, "buildMachineElasticReason": { "type": "string", "enum": [ "basic-floor", "build-timeout-failure", "enospc-failure", "enterprise-floor", "high-peak-disk", "high-peak-memory", "long-build-duration", "oom-failure", "short-build-duration", "sustained-high-cpu" ] }, "buildMachineElasticTransition": { "properties": { "algorithmVersion": { "type": "string" }, "at": { "type": "number" }, "direction": { "type": "string", "enum": [ "downgrade", "upgrade" ] } }, "required": [ "algorithmVersion", "at", "direction" ], "type": "object" }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollingRelease": { "nullable": true, "properties": { "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 }, "gate": { "properties": { "action": { "type": "string", "enum": [ "pause", "rollback" ], "description": "What to do when the gate trips: pause the rollout, or roll it back." }, "checks": { "items": { "properties": { "excludePaths": { "items": { "type": "string" }, "type": "array", "description": "Request paths to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Matched exactly against the request path with any query string removed; no prefix or glob matching. Defaults to `[]` when omitted.", "example": [ "/api/health" ] }, "excludeStatusCodes": { "items": { "type": "number" }, "type": "array", "description": "Response status codes to ignore entirely — dropped from both the numerator (errors) and the denominator (total requests). Defaults to `[]` when omitted.", "example": [ 503 ] }, "ingestWatermarkSeconds": { "type": "number", "description": "Seconds of ingest lag to allow for: the query's upper bound is `now() - this value`, so the check never reads a window that is still filling. Defaults to `30` when omitted.", "example": 30 }, "minSampleSize": { "type": "number", "description": "Minimum number of requests required in the window before the check can fail. Below this, the check is inconclusive rather than failing, so low-traffic stages don't gate on noise. Defaults to `100` when omitted.", "example": 100 }, "type": { "type": "string", "enum": [ "error-rate-5xx" ], "description": "The metric this check evaluates." } }, "required": [ "type" ], "type": "object", "description": "The checks to evaluate. An empty array means nothing is evaluated." }, "type": "array", "description": "The checks to evaluate. An empty array means nothing is evaluated." }, "dryRun": { "type": "boolean", "enum": [ false, true ], "description": "When true, a tripped gate is only reported — {@link action} is not taken." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether automated gating is enabled for this project's rollouts." }, "failureThreshold": { "type": "number", "description": "How many failing evaluations within {@link windowSize} trip the gate. Defaults to `3` when omitted.", "example": 3 }, "windowSize": { "type": "number", "description": "How many of the most recent evaluations {@link failureThreshold} is counted against. Defaults to `5` when omitted.", "example": 5 } }, "required": [ "action", "checks", "dryRun", "enabled" ], "type": "object", "description": "Automated gating configuration. Omitted (the default) means no gating is configured, which is equivalent to `enabled: false`." }, "stages": { "nullable": true, "items": { "properties": { "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 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 } }, "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." }, "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" } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "rootDirectory": { "nullable": true, "type": "string" }, "security": { "properties": { "attackModeActiveUntil": { "nullable": true, "type": "number" }, "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "firewallConfigVersion": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallRoutes": { "items": { "properties": { "dest": { "type": "string" }, "handle": { "type": "string", "enum": [ "finalize", "init" ] }, "has": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "domain_environment", "environment", "header", "headers", "host", "initial_request_path", "ip_address", "method", "path", "protocol", "query", "region", "scheme", "trusted_source" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "list": { "type": "string" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type" ], "type": "object" }, "type": "array" }, "missing": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string", "enum": [ "cookie", "domain_environment", "environment", "header", "headers", "host", "initial_request_path", "ip_address", "method", "path", "protocol", "query", "region", "scheme", "trusted_source" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "list": { "type": "string" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type" ], "type": "object" }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "erl": { "properties": { "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "keys": { "items": { "type": "string" }, "type": "array" }, "limit": { "type": "number" }, "window": { "type": "number" } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "rule_id": { "type": "string" }, "ttl": { "type": "number" } }, "required": [ "action", "rule_id" ], "type": "object" }, "src": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "inc": { "items": { "type": "string" }, "type": "array" }, "list": { "type": "string" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "neq": { "type": "string" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "re": { "type": "string" }, "suf": { "type": "string" } }, "type": "object" } ] }, "status": { "type": "number" }, "tierRequirement": { "type": "string", "enum": [ "priority" ] }, "transforms": { "items": { "properties": { "args": { "type": "string" }, "op": { "type": "string", "enum": [ "append" ] }, "target": { "properties": { "key": { "type": "string" } }, "required": [ "key" ], "type": "object" }, "type": { "type": "string", "enum": [ "request.headers" ] } }, "required": [ "args", "op", "target", "type" ], "type": "object" }, "type": "array" } }, "type": "object" }, "type": "array" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "managedRules": { "nullable": true, "properties": { "ai_bots": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "traffic_sources": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" }, "vercel_ruleset": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] }, "active": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "traffic_sources", "vercel_ruleset" ], "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." }, "requestLogsKey": { "items": { "type": "string" }, "type": "array" }, "rulesets": { "additionalProperties": { "properties": { "action": { "type": "string", "enum": [ "allow", "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "rateLimit": { "nullable": true, "properties": { "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "keys": { "items": { "type": "string" }, "type": "array" }, "limit": { "type": "number" }, "window": { "type": "number" } }, "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" } }, "required": [ "action" ], "type": "object" }, "type": "object" } }, "type": "object" }, "serverlessFunctionRegion": { "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "canceledAt": { "type": "number" }, "dataReceivedAt": { "type": "number", "description": "When the first free (not Speed Insights Plus) production data point was observed, in ms. Set once by subscriber-analytics-events; projects that already had data before this field shipped get it backfilled on their next batch, so it reads \"first free data point observed\", not necessarily \"first ever\"." }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "ssoProtection": { "nullable": true, "properties": { "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] }, "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] } }, "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 ] } ] }, "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": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "dest": { "type": "string" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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 ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "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": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ] }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "url": { "type": "string" }, "userId": { "type": "string", "description": "Present for user creators; omitted for app/integration/system creators." }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url" ], "type": "object" }, "type": "object" }, "tier": { "type": "string", "enum": [ "priority" ] }, "transferCompletedAt": { "type": "number" }, "transferredFromAccountId": { "type": "string" }, "transferStartedAt": { "type": "number" }, "transferToAccountId": { "type": "string" }, "trustedSources": { "nullable": true, "properties": { "enableVercelCiSameRepository": { "type": "boolean", "enum": [ false, true ], "description": "Allow same-team Vercel CI access to preview and production deployments built from the CI run's repository, using the deployment source rather than the current project repository link. Defaults to enabled when not stored; omitted or null Trusted Sources updates preserve the stored value." }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" }, "label": { "type": "string" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" }, "projects": { "additionalProperties": { "properties": { "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "preset": { "type": "string", "enum": [ "all-custom" ] }, "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." } }, "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. An empty array denies all access and is only allowed for the current project." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets. An empty array denies all access and is only allowed for the current project." }, "label": { "type": "string" } }, "type": "object" }, "type": "object" } }, "type": "object" }, "updatedAt": { "type": "number" }, "webAnalytics": { "properties": { "canceledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] }, "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "accountId", "alias", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig", "serverlessFunctionRegion" ], "type": "object" }, "type": "array" } }, "required": [ "pagination", "projects" ], "type": "object" }, { "properties": { "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" } ] }, "projects": { "items": { "properties": { "accountId": { "type": "string" }, "alias": { "items": { "properties": { "configuredBy": { "nullable": true, "type": "string", "enum": [ "A", "CNAME", "dns-01", "http", 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 ] } ] }, "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": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "dest": { "type": "string" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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 ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "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": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ] }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "url": { "type": "string" }, "userId": { "type": "string", "description": "Present for user creators; omitted for app/integration/system creators." }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "preview", "production" ] }, "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": [ "PREVIEW", "PRODUCTION", "STAGING" ] } }, "required": [ "deployment", "domain", "environment", "target" ], "type": "object" }, "type": "array" }, "analytics": { "properties": { "canceledAt": { "nullable": true, "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "id": { "type": "string" }, "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 ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "avatar": { "nullable": true, "type": "string" }, "blobs": { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false, true ], "description": "Marks the team-level, Vercel-managed default blob project (`vercel-blob-default-project`) that orphan blob stores are scoped to when connected without an explicit project. Set only by internal storage flows and immutable after creation — guards rely on it to protect the connected stores from being lost when the project is deleted or transferred." } }, "type": "object" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "concurrencyBucketName": { "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "aws": { "properties": { "securityGroupId": { "type": "string" }, "subnetIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "subnetIds" ], "type": "object" }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "type": "string" }, "createdAt": { "type": "number" }, "dc": { "type": "string" }, "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "preview", "production" ] } ] }, "passive": { "type": "boolean", "enum": [ false, true ] }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "createdAt": { "type": "number" }, "creator": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "via": { "nullable": true, "oneOf": [ { "properties": { "app": { "properties": { "clientId": { "type": "string", "description": "The protocol-facing OAuth client ID. This may differ from {@link id} when Client ID Metadata Documents (CIMD) are used." }, "id": { "type": "string", "description": "The internal ID of the Vercel App backing this principal." } }, "required": [ "id" ], "type": "object" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "app", "type" ], "type": "object", "description": "Set when a Vercel App or Integration acts on behalf of a {@link User}. Captures user-consented OAuth delegation that the ACL layer may inspect to evaluate scope restrictions. This is NOT for impersonation or token-exchange provenance — those live on `auth.token`, not on the principal." }, { "properties": { "integration": { "properties": { "configurationId": { "type": "string" }, "integrationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" }, "type": { "type": "string", "enum": [ "integration" ] } }, "required": [ "integration", "type" ], "type": "object", "description": "Set when a Vercel App or Integration acts on behalf of a {@link User}. Captures user-consented OAuth delegation that the ACL layer may inspect to evaluate scope restrictions. This is NOT for impersonation or token-exchange provenance — those live on `auth.token`, not on the principal." } ] }, "user": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "type", "user", "via" ], "type": "object" }, { "properties": { "app": { "properties": { "clientId": { "type": "string", "description": "The protocol-facing OAuth client ID. This may differ from {@link id} when Client ID Metadata Documents (CIMD) are used." }, "id": { "type": "string", "description": "The internal ID of the Vercel App backing this principal." } }, "required": [ "id" ], "type": "object" }, "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "app", "type" ], "type": "object" }, { "properties": { "integration": { "properties": { "configurationId": { "type": "string" }, "integrationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" }, "type": { "type": "string", "enum": [ "integration" ] } }, "required": [ "integration", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object" } ] }, "crons": { "properties": { "definitions": { "items": { "properties": { "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "host": { "type": "string", "description": "The hostname that should be used.", "example": "vercel.com" }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." }, "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)." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" }, "deploymentId": { "nullable": true, "type": "string", "description": "The ID of the Deployment from which the definitions originated." }, "disabledAt": { "nullable": true, "type": "number", "description": "The time the feature was disabled for this project." }, "enabledAt": { "type": "number", "description": "The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs." }, "updatedAt": { "type": "number" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "customEnvironments": { "items": { "properties": { "branchMatcher": { "properties": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "domains": { "items": { "properties": { "apexName": { "type": "string" }, "createdAt": { "type": "number" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "gitBranch": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "updatedAt": { "type": "number" }, "verification": { "items": { "properties": { "domain": { "type": "string" }, "reason": { "type": "string" }, "type": { "type": "string" }, "value": { "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`." }, "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", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "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": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "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" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "dataCache": { "properties": { "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] }, "userDisabled": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "defaultResourceConfig": { "properties": { "buildMachineElasticLastUpdated": { "type": "number" }, "buildMachineElasticReason": { "type": "string", "enum": [ "basic-floor", "build-timeout-failure", "enospc-failure", "enterprise-floor", "high-peak-disk", "high-peak-memory", "long-build-duration", "oom-failure", "short-build-duration", "sustained-high-cpu" ] }, "buildMachineElasticTransition": { "properties": { "algorithmVersion": { "type": "string" }, "at": { "type": "number" }, "direction": { "type": "string", "enum": [ "downgrade", "upgrade" ] } }, "required": [ "algorithmVersion", "at", "direction" ], "type": "object" }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "deploymentExpiration": { "properties": { "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." }, "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview 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." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." } }, "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." }, "deploymentPolicy": { "nullable": true, "properties": { "deploymentSources": { "nullable": true, "items": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "oneOf": [ { "properties": { "target": { "type": "string", "enum": [ "preview", "production" ] }, "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "target", "type" ], "type": "object" }, { "properties": { "environmentId": { "type": "string" }, "type": { "type": "string", "enum": [ "custom" ] } }, "required": [ "environmentId", "type" ], "type": "object" } ] }, "type": "array" }, "sources": { "items": { "type": "string", "enum": [ "cli", "deploy-hook", "git", "integration", "rest-api", "v0" ], "description": "Customer-configurable deployment sources. Every deploy classifies to exactly one. JSON schema in `packages/deployment-policy/schemas/body.ts` enumerates exactly these values. - `'git'` — git provider webhook. - `'cli'` — Vercel CLI (legacy classic-token CLI and SIWV CLI both). - `'rest-api'` — direct user/team-token REST upload. Does NOT cover deploy hooks, Marketplace integrations, or first-party app tokens. - `'deploy-hook'` — project deploy-hook URL. The URL is the credential. - `'integration'` — third-party Marketplace actor: Marketplace integration token, user-delegated OAuth from a Marketplace app, or an unrecognized third-party Vercel App. First-party Vercel Apps are never `'integration'`. - `'v0'` — the v0 product surface (entitlement-gated). v0 deploys through the CLI under the hood, but classifies as its own source so a team can allow or deny v0 independently of `'cli'`. First-party Vercel apps (Toolbar, etc.) classify as `'first-party'` — see `ClassifiedSource` in `./checks`. They're not in this union because they aren't customer-configurable; they bypass `checkDeploymentSources` entirely. v0 is intentionally NOT among them: like the CLI, it's a real product surface and is policy-controllable." }, "type": "array" } }, "required": [ "enabled", "environments", "sources" ], "type": "object", "description": "`enabled: true` with empty `sources` is deny-all." }, "type": "array" }, "gitSources": { "nullable": true, "items": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "oneOf": [ { "properties": { "target": { "type": "string", "enum": [ "preview", "production" ] }, "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "target", "type" ], "type": "object" }, { "properties": { "environmentId": { "type": "string" }, "type": { "type": "string", "enum": [ "custom" ] } }, "required": [ "environmentId", "type" ], "type": "object" } ] }, "type": "array" }, "sources": { "items": { "oneOf": [ { "properties": { "org": { "type": "string" }, "provider": { "type": "string", "enum": [ "bitbucket", "github" ] }, "repo": { "type": "string" } }, "required": [ "org", "provider" ], "type": "object", "description": "Allowlist entry for GitHub and Bitbucket, whose repos are identified by a flat `org`/`repo` (Bitbucket's workspace/owner maps to `org`, its repo slug to `repo`). Omit `repo` to match any repo in the org. Org is matched case-insensitively." }, { "properties": { "namespace": { "type": "string" }, "project": { "type": "string" }, "provider": { "type": "string", "enum": [ "gitlab" ] } }, "required": [ "namespace", "provider" ], "type": "object", "description": "Allowlist entry for GitLab, which uses nested groups rather than a flat org/repo. `namespace` is the full group path (e.g. `group` or `group/subgroup`); `project` is the leaf project name. Omit `project` to match any project under the namespace. Namespace is matched case-insensitively." } ] }, "type": "array" } }, "required": [ "enabled", "environments", "sources" ], "type": "object", "description": "`enabled: true` with empty `sources` is deny-all." }, "type": "array" } }, "type": "object", "description": "Project shape. `null` on a rule list clears the project's override for that rule type (fall back to team for every env); omitting is equivalent. Setting `deploymentPolicy` itself to `null` clears every override at once. Kept structurally distinct from {@link TeamDeploymentPolicy} so the two storage locations don't share a type by accident." }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "dismissedToasts": { "items": { "properties": { "action": { "type": "string", "enum": [ "accept", "cancel", "delete" ] }, "dismissedAt": { "type": "number" }, "key": { "type": "string" }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "currentValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "previousValue": { "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" }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] }, "enablePreviewFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "enableProductionFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "env": { "items": { "properties": { "comment": { "type": "string" }, "configurationId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-read-write-token" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-store-id" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "blob-webhook-public-key" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-prisma-url" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-user" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-host" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-password" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-database" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "integrationConfigurationId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "storeId": { "type": "string" }, "type": { "type": "string", "enum": [ "integration-store-secret" ] } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "string" }, "type": { "type": "string", "enum": [ "flags-connection-string" ] } }, "required": [ "projectId", "type" ], "type": "object" } ] }, "createdAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "gitBranch": { "type": "string" }, "id": { "type": "string" }, "internalContentHint": { "nullable": true, "properties": { "encryptedValue": { "type": "string", "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." }, "type": { "type": "string", "enum": [ "flags-secret" ] } }, "required": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "key": { "type": "string" }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "secret", "sensitive", "system" ] }, "updatedAt": { "type": "number" }, "updatedBy": { "nullable": true, "type": "string" }, "value": { "type": "string" }, "visibility": { "type": "string", "enum": [ "config", "secret" ], "description": "User-facing config/secret model. When set, authoritative for new code paths. Legacy rows omit this field and callers fall back to existing `type` behavior." }, "vsmValue": { "type": "string" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "expiration": { "oneOf": [ { "properties": { "expiresAt": { "type": "number", "description": "Unix ms timestamp when the project is scheduled to expire." } }, "required": [ "expiresAt" ], "type": "object" }, { "properties": { "lockedAt": { "type": "number", "description": "Unix ms timestamp when the project was locked." }, "lockedBy": { "type": "string", "description": "userId of the actor that triggered the lock (system or admin)." } }, "required": [ "lockedAt", "lockedBy" ], "type": "object" } ] }, "features": { "properties": { "webAnalytics": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "factory-eve", "fastapi", "fasthtml", "fastify", "flask", "gatsby", "go", "gridsome", "h3", "hexo", "hono", "hugo", "hydrogen", "ionic-angular", "ionic-react", "jekyll", "koa", "mastra", "middleman", "nestjs", "nextjs", "nitro", "node", "nuxtjs", "parcel", "polymer", "preact", "python", "react-router", "redwoodjs", "remix", "ruby", "rust", "saber", "sanity", "sanity-v2", "sapper", "scully", "services", "solidstart", "solidstart-1", "stencil", "storybook", "svelte", "sveltekit", "sveltekit-1", "tanstack-start", "tanstack-start-lovable", "umijs", "vite", "vitepress", "vue", "vuepress", "xmcp", "zola", null ] }, "gitComments": { "properties": { "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" }, "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "gitProviderOptions": { "properties": { "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." }, "createDeployments": { "type": "string", "enum": [ "disabled", "enabled" ], "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 - `true`: disable repository-dispatch events for this project (explicit override of the team setting). - `false`: enable repository-dispatch events for this project (explicit override of the team setting). - absent: inherit from `team.disableRepositoryDispatchEvents`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "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`." } }, "required": [ "createDeployments" ], "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "hasDeployments": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "expiry": { "type": "number" }, "src": { "type": "string" }, "status": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "type": { "type": "string", "enum": [ "header" ] }, "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" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "jobs": { "properties": { "flag-definitions-present": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "mfe-config-present": { "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" }, "lastAliasRequest": { "nullable": true, "properties": { "fromDeploymentId": { "nullable": true, "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": [ "failed", "in-progress", "pending", "skipped", "succeeded" ] }, "requestedAt": { "type": "number" }, "toDeploymentId": { "type": "string" }, "type": { "type": "string", "enum": [ "promote", "rollback" ] } }, "required": [ "fromDeploymentId", "jobStatus", "requestedAt", "toDeploymentId", "type" ], "type": "object" }, "lastRollbackTarget": { "nullable": true, "type": "object" }, "latestDeployments": { "items": { "properties": { "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": { "pattern": { "type": "string", "description": "The pattern to match against branch names" }, "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "dest": { "type": "string" }, "src": { "type": "string" }, "use": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "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 ] }, "id": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "oidcTokenClaims": { "properties": { "aud": { "type": "string" }, "custom_environment_id": { "type": "string" }, "deployment_id": { "type": "string" }, "environment": { "type": "string" }, "iss": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "plan": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "scope": { "type": "string" }, "sub": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "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": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "readySubstate": { "type": "string", "enum": [ "PROMOTED", "ROLLING", "STAGED" ] }, "requestedAt": { "type": "number" }, "target": { "nullable": true, "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "url": { "type": "string" }, "userId": { "type": "string", "description": "Present for user creators; omitted for app/integration/system creators." }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url" ], "type": "object" }, "type": "array" }, "link": { "oneOf": [ { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github-limited" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "host": { "type": "string" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "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." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "github-custom-host" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "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" }, "productionBranch": { "type": "string" }, "projectId": { "type": "string" }, "projectName": { "type": "string" }, "projectNamespace": { "type": "string" }, "projectNameWithNamespace": { "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" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "gitlab" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "type": "object" }, { "properties": { "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" }, "name": { "type": "string" }, "owner": { "type": "string" }, "productionBranch": { "type": "string" }, "slug": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "updatedAt": { "type": "number" }, "uuid": { "type": "string" }, "workspaceUuid": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "vercel" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "repoId", "type" ], "type": "object" }, { "properties": { "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" }, "org": { "type": "string" }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "v0" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "repoId", "type" ], "type": "object" }, { "properties": { "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" }, "owner": { "type": "string", "description": "Owner (namespace) slug, e.g. `acme`." }, "ownerId": { "type": "string", "description": "Origin namespace id (`ns_…`) of the owner." }, "productionBranch": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "updatedAt": { "type": "number" } }, "required": [ "deployHooks", "gitCredentialId", "owner", "ownerId", "productionBranch", "repo", "repoId", "type" ], "type": "object" } ] }, "live": { "type": "boolean", "enum": [ false, true ] }, "microfrontends": { "oneOf": [ { "properties": { "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`" }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "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." }, "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." }, "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "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`" }, "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." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "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." }, "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." }, "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." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "updatedAt": { "type": "number" } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "global", "team" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "optionsAllowlist": { "nullable": true, "properties": { "paths": { "items": { "properties": { "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" } }, "required": [ "paths" ], "type": "object" }, "outputDirectory": { "nullable": true, "type": "string" }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "passport": { "nullable": true, "properties": { "connectorId": { "type": "string" }, "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] } }, "required": [ "connectorId", "deploymentType" ], "type": "object" }, "passwordProtection": { "nullable": true, "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "permissions": { "properties": { "accessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "agent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayApiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayApiKeyBypassAll": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayApiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayApiKeySpendAttribution": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayApiKeyZdrExemption": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayBudget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayCredits": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayGuardrails": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayPrivateModels": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayRules": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewaySettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayTranscripts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayTranscriptsSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aiGatewayVirtualModelConfigs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "alertRules": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "alerts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aliasGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aliasProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "aliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "analytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "analyticsSampling": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "analyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "apiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "apiKeyAiGateway": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "apiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "auditLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "automation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingAddress": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingInformation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingInvoiceEmailRecipient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingInvoiceLanguage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingPurchaseOrder": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingRefund": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "billingTaxId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "blob": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "blobStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "budget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "buildMachine": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "buildMachineDefault": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "bulkRedirects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "cacheArtifact": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "cacheArtifactUsageEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "ciInvocations": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "ciLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "codeChecks": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "codeOwners": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "concurrentBuilds": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connect": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connectConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connectConfigurationLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connectLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connexClient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connexClientProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connexContact": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connexInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "connexToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "cursorOriginInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "dataCacheBillingSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "dataCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "defaultDeploymentProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deployment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentBuildLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentCheckPreview": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentCheckReRunFromProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentPolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentPreview": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentPrivate": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentProductionGit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentPromote": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentProtectionException": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentRollback": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "deploymentV0": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainAcceptDelegation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainAuthCodes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainCertificate": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainPurchase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainRecord": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "domainTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "drain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "edgeCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "edgeConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "edgeConfigItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "edgeConfigSchema": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "edgeConfigToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "endpointVerification": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "environments": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "fileUpload": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "flagsExplorerSubscription": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "gitCredentialGrant": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "gitRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "imageOptimizationNewPrice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationConfigurationProjects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationConfigurationRole": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationConfigurationTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationDeploymentAction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationPullRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationResource": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationResourceData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationResourceReplCommand": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationResourceSecrets": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationSSOSession": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "integrationVercelConfigurationOverride": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "ipBlocking": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "job": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "jobGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "kmsIssuer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "kmsProjectGrant": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "logDrain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "logs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "logsPreset": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceBillingData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceExperimentationEdgeConfigData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceExperimentationItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceFlexCommit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceInstallationMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "marketplaceSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "messageboard": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "messageboardSpace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "messageboardTask": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "Monitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "monitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "monitoringChart": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "monitoringQuery": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "monitoringSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationCustomerBudget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDeploymentFailed": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainExpire": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainMoved": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainPurchase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainRenewal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationDomainUnverified": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "NotificationMonitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationPaymentFailed": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationPreferences": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationStatementOfReasons": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "notificationUsageAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "oauth2Application": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "oauth2Connection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "observabilityConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "observabilityData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "observabilityFunnel": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "observabilityNotebook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "oidcFederationPolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "onDemandBuild": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "onDemandConcurrency": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "openTelemetryEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "optionsAllowlist": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array", "description": "Requested and authorized operations when `checkPermissions` is used. Legacy `includePermissions` responses contain a broader, non-authoritative permission summary." }, "organization": { "items": { "$ref": "#/components/schemas/ACLAction"