{ "openapi": "3.0.3", "info": { "title": "Vercel REST API & SDK", "description": "The [`@vercel/sdk`](https://www.npmjs.com/package/@vercel/sdk) is a type-safe Typescript SDK that allows you to access the resources and methods of the Vercel REST API. Learn how to [install it](https://vercel.com/docs/rest-api/sdk#installing-vercel-sdk) and [authenticate](https://vercel.com/docs/rest-api/sdk#authentication) with a Vercel access token.", "contact": { "email": "support@vercel.com", "name": "Vercel Support", "url": "https://vercel.com/support" }, "version": "0.0.1" }, "servers": [ { "url": "https://api.vercel.com", "description": "Production API" } ], "paths": { "/v1/access-groups/{idOrName}": { "get": { "description": "Allows to read an access group", "operationId": "readAccessGroup", "security": [ { "bearerToken": [] } ], "summary": "Reads an access group", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "teamPermissions": { "items": { "type": "string", "enum": [ "AiGatewayApiKeyOwnedBySelf", "AiGatewayBudgetManager", "AiGatewayCredits", "AiGatewaySettings", "ConnectorManager", "CreateProject", "EnvVariableManager", "EnvironmentManager", "FullProductionDeployment", "IntegrationManager", "OrgAdmin", "OrgViewer", "UsageViewer", "V0Builder", "V0Chatter", "V0Viewer" ] }, "type": "array" }, "entitlements": { "items": { "type": "string", "enum": [ "v0" ] }, "type": "array" }, "isDsyncManaged": { "type": "boolean", "enum": [ false, true ] }, "name": { "type": "string", "description": "The name of this access group.", "example": "my-access-group" }, "createdAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was created.", "example": 1588720733602 }, "teamId": { "type": "string", "description": "ID of the team that this access group belongs to.", "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" }, "updatedAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was last updated.", "example": 1588720733602 }, "accessGroupId": { "type": "string", "description": "ID of the access group.", "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" }, "membersCount": { "type": "number", "description": "Number of members in the access group.", "example": 5 }, "projectsCount": { "type": "number", "description": "Number of projects in the access group.", "example": 2 }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] } }, "required": [ "accessGroupId", "createdAt", "isDsyncManaged", "membersCount", "name", "projectsCount", "teamId", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] }, "post": { "description": "Allows to update an access group metadata", "operationId": "updateAccessGroup", "security": [ { "bearerToken": [] } ], "summary": "Update an access group", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "entitlements": { "items": { "type": "string", "enum": [ "v0" ] }, "type": "array" }, "name": { "type": "string", "description": "The name of this access group.", "example": "my-access-group" }, "createdAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was created.", "example": 1588720733602 }, "teamId": { "type": "string", "description": "ID of the team that this access group belongs to.", "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" }, "updatedAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was last updated.", "example": 1588720733602 }, "accessGroupId": { "type": "string", "description": "ID of the access group.", "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" }, "membersCount": { "type": "number", "description": "Number of members in the access group.", "example": 5 }, "projectsCount": { "type": "number", "description": "Number of projects in the access group.", "example": 2 }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] }, "teamPermissions": { "items": { "type": "string" }, "type": "array", "description": "Permissions that the team has in the access group.", "example": [ "CreateProject" ] } }, "required": [ "accessGroupId", "createdAt", "entitlements", "membersCount", "name", "projectsCount", "teamId", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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 } }, "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." }, "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" } } ] } }, "/v1/access-groups/{idOrName}/members": { "get": { "description": "List members of an access group", "operationId": "listAccessGroupMembers", "security": [ { "bearerToken": [] } ], "summary": "List members of an access group", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "members": { "items": { "properties": { "avatar": { "type": "string" }, "email": { "type": "string" }, "uid": { "type": "string" }, "username": { "type": "string" }, "name": { "type": "string" }, "createdAt": { "type": "string" }, "teamRole": { "type": "string", "enum": [ "BILLING", "CONTRIBUTOR", "DEVELOPER", "MEMBER", "OWNER", "SECURITY", "VIEWER", "VIEWER_FOR_PLUS" ] } }, "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." }, "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" } } ] } }, "/v1/access-groups": { "get": { "description": "List access groups", "operationId": "listAccessGroups", "security": [ { "bearerToken": [] } ], "summary": "List access groups for a team, project or member", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "accessGroups": { "items": { "properties": { "members": { "items": { "type": "string" }, "type": "array" }, "projects": { "items": { "type": "string" }, "type": "array" }, "entitlements": { "items": { "type": "string" }, "type": "array" }, "teamPermissions": { "items": { "type": "string" }, "type": "array" }, "isDsyncManaged": { "type": "boolean", "enum": [ false, true ] }, "name": { "type": "string", "description": "The name of this access group.", "example": "my-access-group" }, "createdAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was created.", "example": 1588720733602 }, "teamId": { "type": "string", "description": "ID of the team that this access group belongs to.", "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" }, "updatedAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was last updated.", "example": 1588720733602 }, "accessGroupId": { "type": "string", "description": "ID of the access group.", "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" }, "membersCount": { "type": "number", "description": "Number of members in the access group.", "example": 5 }, "projectsCount": { "type": "number", "description": "Number of projects in the access group.", "example": 2 }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] } }, "required": [ "accessGroupId", "createdAt", "isDsyncManaged", "membersCount", "name", "projectsCount", "teamId", "updatedAt" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "count": { "type": "number" }, "next": { "nullable": true, "type": "string" } }, "required": [ "count", "next" ], "type": "object" } }, "required": [ "accessGroups", "pagination" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] }, "post": { "description": "Allows to create an access group", "operationId": "createAccessGroup", "security": [ { "bearerToken": [] } ], "summary": "Creates an access group", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "entitlements": { "items": { "type": "string", "enum": [ "v0" ] }, "type": "array" }, "membersCount": { "type": "number" }, "projectsCount": { "type": "number" }, "name": { "type": "string", "description": "The name of this access group.", "example": "my-access-group" }, "createdAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was created.", "example": 1588720733602 }, "teamId": { "type": "string", "description": "ID of the team that this access group belongs to.", "example": "team_123a6c5209bc3778245d011443644c8d27dc2c50" }, "updatedAt": { "type": "string", "description": "Timestamp in milliseconds when the access group was last updated.", "example": 1588720733602 }, "accessGroupId": { "type": "string", "description": "ID of the access group.", "example": "ag_123a6c5209bc3778245d011443644c8d27dc2c50" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Roles that the team has in the access group.", "example": [ "DEVELOPER", "BILLING" ] }, "teamPermissions": { "items": { "type": "string" }, "type": "array", "description": "Permissions that the team has in the access group.", "example": [ "CreateProject" ] } }, "required": [ "accessGroupId", "createdAt", "entitlements", "membersCount", "name", "projectsCount", "teamId", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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 } } }, "/v1/access-groups/{idOrName}/projects": { "get": { "description": "List projects of an access group", "operationId": "listAccessGroupProjects", "security": [ { "bearerToken": [] } ], "summary": "List projects of an access group", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "projects": { "items": { "properties": { "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ] }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" }, "project": { "properties": { "name": { "type": "string" }, "framework": { "nullable": true, "type": "string" }, "latestDeploymentId": { "type": "string" } }, "type": "object" } }, "required": [ "createdAt", "project", "projectId", "role", "updatedAt" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "count": { "type": "number" }, "next": { "nullable": true, "type": "string" } }, "required": [ "count", "next" ], "type": "object" } }, "required": [ "pagination", "projects" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] } }, "/v1/access-groups/{accessGroupIdOrName}/projects": { "post": { "description": "Allows creation of an access group project", "operationId": "createAccessGroupProject", "security": [ { "bearerToken": [] } ], "summary": "Create an access group project", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "teamId": { "type": "string" }, "accessGroupId": { "type": "string" }, "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ] }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" } }, "required": [ "accessGroupId", "createdAt", "projectId", "role", "teamId", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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 } } }, "/v1/access-groups/{accessGroupIdOrName}/projects/{projectId}": { "get": { "description": "Allows reading an access group project", "operationId": "readAccessGroupProject", "security": [ { "bearerToken": [] } ], "summary": "Reads an access group project", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "teamId": { "type": "string" }, "accessGroupId": { "type": "string" }, "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ] }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" } }, "required": [ "accessGroupId", "createdAt", "projectId", "role", "teamId", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] }, "patch": { "description": "Allows update of an access group project", "operationId": "updateAccessGroupProject", "security": [ { "bearerToken": [] } ], "summary": "Update an access group project", "tags": [ "access-groups" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "teamId": { "type": "string" }, "accessGroupId": { "type": "string" }, "projectId": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ] }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" } }, "required": [ "accessGroupId", "createdAt", "projectId", "role", "teamId", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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 } }, "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." }, "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" } } ] } }, "/v1/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." }, "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" } } ] }, "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." }, "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" } } ] }, "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" } } ] }, "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" } } ] } }, "/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." }, "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 } } }, "/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." }, "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" } } ] } }, "/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." }, "410": { "description": "" } }, "parameters": [ { "in": "header", "description": "The artifact size in bytes", "required": false, "schema": { "description": "The artifact size in bytes", "type": "number" }, "name": "'content-Length'" }, { "in": "header", "description": "The time taken to generate the uploaded artifact in milliseconds.", "required": false, "schema": { "type": "number", "description": "The time taken to generate the uploaded artifact in milliseconds.", "example": 400 }, "name": "'x-Artifact-Duration'" }, { "in": "header", "description": "The continuous integration or delivery environment where this artifact was generated.", "required": false, "schema": { "type": "string", "description": "The continuous integration or delivery environment where this artifact was generated.", "example": "VERCEL", "maxLength": 50 }, "name": "'x-Artifact-Client-Ci'" }, { "in": "header", "description": "1 if the client is an interactive shell. Otherwise 0", "required": false, "schema": { "type": "integer", "description": "1 if the client is an interactive shell. Otherwise 0", "example": 0, "minimum": 0, "maximum": 1 }, "name": "'x-Artifact-Client-Interactive'" }, { "in": "header", "description": "The base64 encoded tag for this artifact. The value is sent back to clients when the artifact is downloaded as the header `x-artifact-tag`", "required": false, "schema": { "type": "string", "description": "The base64 encoded tag for this artifact. The value is sent back to clients when the artifact is downloaded as the header `x-artifact-tag`", "example": "Tc0BmHvJYMIYJ62/zx87YqO0Flxk+5Ovip25NY825CQ=", "maxLength": 600 }, "name": "'x-Artifact-Tag'" }, { "in": "header", "description": "The SHA of the source control revision that generated this artifact.", "required": false, "schema": { "type": "string", "description": "The SHA of the source control revision that generated this artifact.", "maxLength": 200 }, "name": "'x-Artifact-Sha'" }, { "in": "header", "description": "A hash representing uncommitted changes in the working directory when this artifact was generated.", "required": false, "schema": { "type": "string", "description": "A hash representing uncommitted changes in the working directory when this artifact was generated.", "maxLength": 200 }, "name": "'x-Artifact-Dirty-Hash'" }, { "name": "hash", "description": "The artifact hash", "in": "path", "required": true, "schema": { "example": "12HKQaOmR5t5Uy6vdcQsNIiZgHGB", "description": "The artifact hash", "type": "string" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } }, "required": true }, "x-speakeasy-test": false }, "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" } } ] }, "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" } } ] } }, "/v8/artifacts": { "post": { "description": "Query information about an array of artifacts.", "operationId": "artifactQuery", "security": [ { "bearerToken": [] } ], "summary": "Query information about an artifact", "tags": [ "artifacts" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "additionalProperties": { "nullable": true, "oneOf": [ { "properties": { "size": { "type": "number" }, "taskDurationMs": { "type": "number" }, "tag": { "type": "string" }, "sha": { "type": "string" }, "dirtyHash": { "type": "string" } }, "required": [ "size", "taskDurationMs" ], "type": "object" }, { "properties": { "error": { "properties": { "message": { "type": "string" } }, "required": [ "message" ], "type": "object" } }, "required": [ "error" ], "type": "object" } ] }, "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "The customer has reached their spend cap limit and has been paused. An owner can disable the cap or raise the limit in settings.\nThe Remote Caching usage limit has been reached for this account for this billing cycle.\nRemote Caching has been disabled for this team or user. An owner can enable it in the billing settings.\nYou do not have permission to access this resource." }, "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 } }, "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." }, "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/charges": { "get": { "description": "Returns the billing charge data in FOCUS v1.3 JSONL format for a specified Vercel team, within a date range specified by `from` and `to` query parameters. Supports 1-day granularity with a maximum date range of 1 year. The response is streamed as newline-delimited JSON (JSONL) and can be optionally compressed with gzip if the `Accept-Encoding: gzip` header is provided. This is only available for Owner, Member, Developer, Security, Billing, and Enterprise Viewer roles for the supplied team.", "operationId": "listBillingCharges", "security": [ { "bearerToken": [] } ], "summary": "List FOCUS billing charges", "tags": [ "billing" ], "responses": { "200": { "description": "", "content": { "application/jsonl": { "schema": { "properties": { "BilledCost": { "type": "number", "description": "Charge amount serving as the basis for invoicing" }, "BillingCurrency": { "type": "string", "enum": [ "USD" ], "description": "Currency used for billing (ISO 4217)" }, "ChargeCategory": { "type": "string", "enum": [ "Adjustment", "Credit", "Purchase", "Tax", "Usage" ], "description": "Classification of the charge" }, "ChargePeriodStart": { "type": "string", "description": "Inclusive start of the charge period (ISO 8601 UTC)" }, "ChargePeriodEnd": { "type": "string", "description": "Exclusive end of the charge period (ISO 8601 UTC) - Required in v1.3" }, "ConsumedQuantity": { "nullable": true, "type": "number", "description": "Volume of resource consumed. Null when a charge does not involve measurable consumption quantity." }, "ConsumedUnit": { "nullable": true, "type": "string", "description": "Unit of measurement for consumed quantity. Null when the charge is not measured in units." }, "EffectiveCost": { "type": "number", "description": "Amortized cost representation including discounts, pre-commitment credit purchase amount, etc." }, "RegionId": { "type": "string", "description": "Provider-assigned region identifier" }, "RegionName": { "type": "string", "description": "Display name for the region" }, "ServiceName": { "type": "string", "description": "Display name for the service/product" }, "ServiceCategory": { "type": "string", "enum": [ "AI and Machine Learning", "Analytics", "Business Applications", "Compute", "Databases", "Developer Tools", "Identity", "Integration", "Internet of Things", "Management and Governance", "Media", "Migration", "Mobile", "Multicloud", "Networking", "Other", "Security", "Storage", "Web" ], "description": "High-level category of the service" }, "ServiceProviderName": { "type": "string", "description": "Entity making the resource/service available for purchase (v1.3)" }, "Tags": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Charge metadata including the Vercel ProjectId and ProjectName information" }, "PricingCategory": { "type": "string", "enum": [ "Committed", "Dynamic", "Other", "Standard" ], "description": "Pricing model used for the charge." }, "PricingCurrency": { "type": "string", "enum": [ "USD" ] }, "PricingQuantity": { "type": "number" }, "PricingUnit": { "type": "string" } }, "required": [ "BilledCost", "BillingCurrency", "ChargeCategory", "ChargePeriodEnd", "ChargePeriodStart", "ConsumedQuantity", "ConsumedUnit", "EffectiveCost", "PricingCategory", "PricingCurrency", "PricingQuantity", "PricingUnit", "ServiceName", "ServiceProviderName", "Tags" ], "type": "object", "description": "Extension of the base schema for Focus charges. Includes pricing information for all customers." } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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": { "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." }, "ContractCommitmentPeriodStart": { "type": "string", "description": "Inclusive start of the commitment term period (ISO 8601 UTC)" }, "ContractCommitmentPeriodEnd": { "type": "string", "description": "Exclusive end of the commitment term period (ISO 8601 UTC)" }, "ContractCommitmentQuantity": { "type": "number", "description": "Amount associated with the commitment (in ContractCommitmentUnit). Required when ContractCommitmentCategory is 'Usage'. For Enterprise: MIU allocation amount." }, "ContractCommitmentType": { "type": "string", "description": "Service-provider-assigned name identifying the commitment type. 'Pro' or 'Enterprise' for Vercel." }, "ContractCommitmentUnit": { "type": "string", "description": "Measurement unit for ContractCommitmentQuantity. 'MIUs' for Enterprise, 'USD' for Pro spend commitments." }, "ContractId": { "type": "string", "description": "Service-provider-assigned identifier for a contract. Maps to Orb Subscription ID for Vercel." }, "ContractPeriodStart": { "type": "string", "description": "Inclusive start of the overall contract period (ISO 8601 UTC)" }, "ContractPeriodEnd": { "type": "string", "description": "Exclusive end of the overall contract period (ISO 8601 UTC)" }, "BillingCurrency": { "type": "string" } }, "required": [ "BillingCurrency", "ContractCommitmentCategory", "ContractCommitmentId", "ContractCommitmentPeriodEnd", "ContractCommitmentPeriodStart", "ContractCommitmentType", "ContractCommitmentUnit", "ContractId", "ContractPeriodEnd", "ContractPeriodStart" ], "type": "object", "description": "Contract commitment information describing terms within a contract. New in FOCUS v1.3 - tracks commitment terms separate from cost/usage rows. For Vercel: - Pro: $20 monthly spend commitment - Enterprise: MIU allocation per period (usage commitment)" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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": { "id": { "type": "string", "description": "The unique ID of a Purchase Intent. Uses the format `pur_*`" }, "configuration": { "oneOf": [ { "properties": { "options": { "properties": { "amount": { "type": "string", "description": "The amount of currency to buy" }, "currency": { "type": "string", "enum": [ "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": { "effectiveDate": { "oneOf": [ { "type": "object", "description": "The effective date of the plan change" }, { "type": "string", "enum": [ "end_of_subscription_term", "immediate" ] } ] }, "orbSubscriptionId": { "type": "string", "description": "The ID of the Orb subscription to change" }, "alignBillingWithPlanChangeDate": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to reset the billing cycle" }, "couponRedemptionCode": { "type": "string", "description": "The coupon redemption code to apply to the plan change" }, "externalPlanId": { "type": "string", "description": "The ID of the external plan to change to" }, "replacePrices": { "items": { "properties": { "fixedPriceQuantity": { "type": "number", "description": "The quantity for the fixed price" }, "replacesPriceId": { "type": "string", "description": "The ID of the price to replace" } }, "required": [ "fixedPriceQuantity", "replacesPriceId" ], "type": "object", "description": "The prices to replace in the subscription" }, "type": "array", "description": "The prices to replace in the subscription" } }, "required": [ "effectiveDate", "orbSubscriptionId" ], "type": "object" }, "output": { "properties": { "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change" } }, "required": [ "pendingSubscriptionChangeId" ], "type": "object" }, "type": { "type": "string", "enum": [ "orb_plan_change" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" }, { "properties": { "options": { "type": "object" }, "output": { "properties": { "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change" } }, "required": [ "pendingSubscriptionChangeId" ], "type": "object" }, "type": { "type": "string", "enum": [ "orb_price_interval" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" }, { "properties": { "options": { "properties": { "externalPlanId": { "type": "string", "description": "The external plan ID of the Orb plan to subscribe to" }, "addPrices": { "items": { "oneOf": [ { "properties": { "priceId": { "type": "string", "description": "The ID of the price to add" } }, "required": [ "priceId" ], "type": "object", "description": "The prices to add to the subscription" }, { "type": "object", "description": "The prices to add to the subscription" } ] }, "type": "array", "description": "The prices to add to the subscription" }, "alignBillingWithSubscriptionStartDate": { "type": "boolean", "enum": [ false, true ], "description": "Whether to align the subscription start date with the billing subscription start date" }, "couponRedemptionCode": { "type": "string", "description": "The coupon redemption code to apply to the subscription" }, "initialPhaseOrder": { "type": "number", "description": "The initial phase order to use for the subscription" }, "metadata": { "additionalProperties": { "nullable": true, "type": "string", "description": "Optional metadata to associate with the subscription" }, "type": "object", "description": "Optional metadata to associate with the subscription" }, "removePrices": { "items": { "properties": { "priceId": { "type": "string", "description": "The ID of the price to remove" } }, "required": [ "priceId" ], "type": "object", "description": "The prices to remove in the subscription" }, "type": "array", "description": "The prices to remove in the subscription" }, "replacePrices": { "items": { "properties": { "fixedPriceQuantity": { "type": "number", "description": "The quantity for the fixed price" }, "replacesPriceId": { "type": "string", "description": "The ID of the price to replace" } }, "required": [ "fixedPriceQuantity", "replacesPriceId" ], "type": "object", "description": "The prices to replace in the subscription" }, "type": "array", "description": "The prices to replace in the subscription" }, "startDate": { "type": "string", "description": "The start date of the subscription" } }, "required": [ "externalPlanId" ], "type": "object" }, "output": { "properties": { "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change" } }, "required": [ "pendingSubscriptionChangeId" ], "type": "object" }, "type": { "type": "string", "enum": [ "orb_subscription" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" }, { "properties": { "options": { "properties": { "orbCustomerId": { "type": "string", "description": "The ID of the Orb customer to create" }, "orbExternalCustomerId": { "type": "string", "description": "The external ID of the Orb customer to create" }, "orbExternalPlanId": { "type": "string", "description": "The external ID of the Orb plan to create" }, "orbPendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change" }, "orbPlanId": { "type": "string", "description": "The ID of the Orb plan to create" }, "orbSubscriptionId": { "type": "string", "description": "The ID of the Orb subscription to create" }, "lineItems": { "items": { "properties": { "id": { "type": "string", "description": "The ID of the line item" }, "description": { "type": "string", "description": "The description of the line item" }, "name": { "type": "string", "description": "The name of the line item" }, "productId": { "type": "string", "description": "The ID of the product being purchased" }, "quantity": { "type": "string", "description": "The quantity of the line item" }, "unitAmount": { "type": "string", "description": "The unit amount of the line item" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata for the line item" }, "productAlias": { "type": "string", "description": "The alias of the product being purchased" }, "refund": { "type": "string", "description": "The amount of the line item that has been refunded" } }, "required": [ "description", "id", "name", "productId", "quantity", "unitAmount" ], "type": "object", "description": "The line items that make up the Purchase Intent." }, "type": "array", "description": "The line items that make up the Purchase Intent." } }, "required": [ "orbCustomerId", "orbExternalCustomerId", "orbExternalPlanId", "orbPendingSubscriptionChangeId", "orbPlanId", "orbSubscriptionId" ], "type": "object" }, "output": { "properties": { "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change" } }, "required": [ "pendingSubscriptionChangeId" ], "type": "object" }, "type": { "type": "string", "enum": [ "orb_subscription_intent" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "The configuration for a credit purchase" } ] }, "createdAt": { "type": "string", "description": "The datetime when the Purchase Intent was created." }, "currency": { "type": "string", "enum": [ "miu", "usd" ], "description": "The currency for the purchase intent" }, "ownerId": { "type": "string", "description": "The ID of the owner of the Purchase Intent." }, "provider": { "properties": { "resourceId": { "type": "string", "description": "Provider resource id" }, "type": { "type": "string", "enum": [ "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" }, "currencyConversionRate": { "type": "string", "description": "The currency conversion rate used by the provider" }, "stripeSharedPaymentTokenUsed": { "type": "boolean", "enum": [ false, true ], "description": "Whether a Stripe Shared Payment Token was used for this purchase. Only applicable when type is stripe_invoice_immediate." } }, "required": [ "resourceId", "type" ], "type": "object" }, "status": { "type": "string", "enum": [ "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." }, "dispute": { "properties": { "id": { "type": "string", "description": "The unique ID of the dispute entity." }, "amount": { "type": "string", "description": "The disputed amount." }, "createdAt": { "type": "string", "description": "When the dispute was first recorded." }, "currency": { "type": "string", "description": "The dispute currency." }, "providerId": { "type": "string", "description": "The external provider dispute ID (e.g. Stripe dispute ID)." }, "reason": { "nullable": true, "type": "string", "description": "The dispute reason." }, "status": { "type": "string", "description": "The dispute status." }, "updatedAt": { "type": "string", "description": "When the dispute was last updated." } }, "required": [ "amount", "createdAt", "currency", "id", "providerId", "reason", "status", "updatedAt" ], "type": "object", "description": "The dispute details, if any." }, "lineItems": { "items": { "properties": { "id": { "type": "string", "description": "The ID of the line item" }, "description": { "type": "string", "description": "The description of the line item" }, "name": { "type": "string", "description": "The name of the line item" }, "productId": { "type": "string", "description": "The ID of the product being purchased" }, "quantity": { "type": "string", "description": "The quantity of the line item" }, "unitAmount": { "type": "string", "description": "The unit amount of the line item" }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata for the line item" }, "productAlias": { "type": "string", "description": "The alias of the product being purchased" }, "refund": { "type": "string", "description": "The amount of the line item that has been refunded" } }, "required": [ "description", "id", "name", "productId", "quantity", "unitAmount" ], "type": "object", "description": "The line items that make up the Purchase Intent." }, "type": "array", "description": "The line items that make up the Purchase Intent." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the purchase intent" }, "refund": { "type": "string", "description": "The amount of the purchase intent that has been refunded" }, "returnUrl": { "type": "string", "description": "The URL to redirect to after the purchase is complete" } }, "required": [ "configuration", "createdAt", "currency", "id", "ownerId", "provider", "status", "subtotal", "tax", "total", "updatedAt" ], "type": "object", "description": "The created purchase intent" } }, "required": [ "purchaseIntent" ], "type": "object" }, { "properties": { "orbSubscriptionIntent": { "properties": { "id": { "type": "string", "description": "The ID of the Orb subscription intent with the format `orbsubint_`." }, "configuration": { "oneOf": [ { "properties": { "options": { "properties": { "productAlias": { "type": "string", "description": "The alias of the product to set quantity for." }, "quantity": { "type": "number", "description": "The quantity to set for the plan item." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs for the plan item. Only set if SKU requires resource entitlements." } }, "required": [ "productAlias", "quantity" ], "type": "object", "description": "Configuration input options for setting plan item quantity." }, "output": { "properties": { "effectiveBehavior": { "type": "string", "enum": [ "end_of_term", "immediate" ], "description": "When the subscription change should take effect." }, "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "changedResources": { "items": { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "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." }, "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." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." } }, "required": [ "effectiveBehavior", "orbPriceId", "productId" ], "type": "object", "description": "Output returned after configuring an OrbSubscriptionIntent." }, "type": { "type": "string", "enum": [ "set_plan_item_quantity" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "Configuration for the Orb subscription intent." }, { "properties": { "options": { "properties": { "productAlias": { "type": "string", "description": "The alias of the product to increase quantity for." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs to incrementally add. The quantity of the plan item will be increased by the number of resource IDs." } }, "required": [ "productAlias", "resourceIds" ], "type": "object", "description": "Configuration input options for increasing plan item quantity." }, "output": { "properties": { "effectiveBehavior": { "type": "string", "enum": [ "end_of_term", "immediate" ], "description": "When the subscription change should take effect." }, "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "changedResources": { "items": { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "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." }, "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." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." } }, "required": [ "effectiveBehavior", "orbPriceId", "productId" ], "type": "object", "description": "Output returned after configuring an OrbSubscriptionIntent." }, "type": { "type": "string", "enum": [ "increase_plan_item_quantity" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "Configuration for the Orb subscription intent." }, { "properties": { "options": { "properties": { "productAlias": { "type": "string", "description": "The alias of the product to decrease quantity for." }, "resourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs to decrementally remove. The quantity of the plan item will be decreased by the number of resource IDs." } }, "required": [ "productAlias", "resourceIds" ], "type": "object", "description": "Configuration input options for decreasing plan item quantity." }, "output": { "properties": { "effectiveBehavior": { "type": "string", "enum": [ "end_of_term", "immediate" ], "description": "When the subscription change should take effect." }, "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "changedResources": { "items": { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "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." }, "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." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." } }, "required": [ "effectiveBehavior", "orbPriceId", "productId" ], "type": "object", "description": "Output returned after configuring an OrbSubscriptionIntent." }, "type": { "type": "string", "enum": [ "decrease_plan_item_quantity" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "Configuration for the Orb subscription intent." }, { "properties": { "options": { "properties": { "addedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs to incrementally add. The quantity of the plan item will be increased by the number of resource IDs." }, "productAlias": { "type": "string", "description": "The alias of the product to adjust quantity for." }, "removedResourceIds": { "items": { "type": "string" }, "type": "array", "description": "The resource IDs to incrementally remove. The quantity of the plan item will be decreased by the number of resource IDs." } }, "required": [ "addedResourceIds", "productAlias", "removedResourceIds" ], "type": "object", "description": "Configuration input options for adjusting plan item quantity." }, "output": { "properties": { "effectiveBehavior": { "type": "string", "enum": [ "end_of_term", "immediate" ], "description": "When the subscription change should take effect." }, "orbPriceId": { "type": "string", "description": "The Orb price ID for the subscription item being modified." }, "productId": { "type": "string", "description": "The product ID associated with this intent." }, "changedResources": { "items": { "properties": { "productAlias": { "type": "string", "description": "The alias of the product that was changed." }, "productId": { "type": "string", "description": "The ID of the product that was changed." }, "quantity": { "type": "number", "description": "The resulting quantity after this change." }, "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." }, "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." }, "metadata": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Optional metadata associated with the intent to update the Orb subscription with." }, "pendingSubscriptionChangeId": { "type": "string", "description": "The ID of the pending subscription change if there is one." } }, "required": [ "effectiveBehavior", "orbPriceId", "productId" ], "type": "object", "description": "Output returned after configuring an OrbSubscriptionIntent." }, "type": { "type": "string", "enum": [ "adjust_plan_item_quantity" ] } }, "required": [ "options", "output", "type" ], "type": "object", "description": "Configuration for the Orb subscription intent." } ] }, "createdAt": { "type": "string", "description": "The ISO 8601 date-time that the intent was created." }, "orbSubscriptionId": { "type": "string", "description": "The Orb subscription ID this intent is associated with." }, "ownerId": { "type": "string", "description": "The owner ID for this intent (e.g., team or user ID)." }, "status": { "type": "string", "enum": [ "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." }, "purchaseIntentId": { "type": "string", "description": "Optional purchase intent ID if this is associated with a purchase." } }, "required": [ "configuration", "createdAt", "id", "orbSubscriptionId", "ownerId", "status", "updatedAt" ], "type": "object" } }, "required": [ "orbSubscriptionIntent" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } ] } }, "/v1/bulk-redirects": { "put": { "description": "Stages new redirects for a project and returns the new version.", "operationId": "stageRedirects", "security": [ { "bearerToken": [] } ], "summary": "Stages new redirects for a project.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "alias": { "nullable": true, "type": "string" }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "alias", "version" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } } } } } } } } }, "get": { "description": "Get the version history for a project's bulk redirects", "operationId": "getRedirects", "security": [ { "bearerToken": [] } ], "summary": "Gets project-level redirects.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "additionalProperties": true }, { "properties": { "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" }, "redirects": { "items": { "properties": { "statusCode": { "type": "number" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "sensitive": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "query": { "type": "boolean", "enum": [ false, true ] }, "preserveQueryParams": { "type": "boolean", "enum": [ false, true ] }, "destination": { "type": "string" }, "source": { "type": "string" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "page": { "type": "number" }, "per_page": { "type": "number" }, "numPages": { "type": "number" } }, "required": [ "numPages", "page", "per_page" ], "type": "object" } }, "required": [ "pagination", "redirects", "version" ], "type": "object" }, { "properties": { "redirects": { "items": { "properties": { "statusCode": { "type": "number" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "sensitive": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "query": { "type": "boolean", "enum": [ false, true ] }, "preserveQueryParams": { "type": "boolean", "enum": [ false, true ] }, "destination": { "type": "string" }, "source": { "type": "string" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" }, "pagination": { "properties": { "page": { "type": "number" }, "per_page": { "type": "number" }, "numPages": { "type": "number" } }, "required": [ "numPages", "page", "per_page" ], "type": "object" } }, "required": [ "pagination", "redirects" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] }, "delete": { "description": "Deletes the provided redirects from the latest version of the projects' bulk redirects. Stages a new change with the new redirects and returns the alias for the new version in the response.", "operationId": "deleteRedirects", "security": [ { "bearerToken": [] } ], "summary": "Delete project-level redirects.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "alias": { "type": "string" }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "version" ], "type": "object" }, { "properties": { "alias": { "nullable": true }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "alias", "version" ], "type": "object" }, { "properties": { "alias": { "nullable": true, "type": "string" }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "alias", "version" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" ] } } } } }, "patch": { "description": "Edits a single redirect identified by its source path. Stages a new change with the modified redirect and returns the alias for the new version in the response.", "operationId": "editRedirect", "security": [ { "bearerToken": [] } ], "summary": "Edit a project-level redirect.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "alias": { "nullable": true, "type": "string" }, "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "alias", "version" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" ] } } } } } }, "/v1/bulk-redirects/restore": { "post": { "description": "Restores the provided redirects in the staging version to the value in the production version. If no production version exists, removes the redirects from staging.", "operationId": "restoreRedirects", "security": [ { "bearerToken": [] } ], "summary": "Restore staged project-level redirects to their production version.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" }, "restored": { "items": { "type": "string" }, "type": "array" }, "failedToRestore": { "items": { "type": "string" }, "type": "array" } }, "required": [ "failedToRestore", "restored", "version" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" ] } } } } } }, "/v1/bulk-redirects/versions": { "get": { "description": "Get the version history for a project's bulk redirects", "operationId": "getVersions", "security": [ { "bearerToken": [] } ], "summary": "Get the version history for a project's redirects.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "versions": { "items": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" }, "type": "array" } }, "required": [ "versions" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] }, "post": { "description": "Update a version by promoting staging to production or restoring a previous production version", "operationId": "updateVersion", "security": [ { "bearerToken": [] } ], "summary": "Promote a staging version to production or restore a previous production version.", "tags": [ "bulk-redirects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "version": { "properties": { "id": { "type": "string", "description": "The unique identifier for the version." }, "key": { "type": "string", "description": "The key of the version. The key may be duplicated across versions if the contents are the same as a different version." }, "lastModified": { "type": "number" }, "createdBy": { "type": "string" }, "name": { "type": "string", "description": "Optional name for the version. If not provided, defaults to an ISO timestamp string." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version has not been promoted to production yet and is not serving end users." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "redirectCount": { "type": "number", "description": "The number of redirects in this version." }, "alias": { "type": "string", "description": "The staging link for previewing redirects in this version." } }, "required": [ "createdBy", "id", "key", "lastModified" ], "type": "object" } }, "required": [ "version" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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 } } } } } } } }, "/v2/projects/{projectIdOrName}/checks": { "get": { "description": "List all checks for a project, optionally filtered by target.", "operationId": "listProjectChecks", "security": [ { "bearerToken": [] } ], "summary": "List all checks for a project", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "checks": { "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "sourceKind": { "type": "string", "enum": [ "git-provider", "integration", "vercel", "webhook", "integration", "webhook", "git-provider" ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deletedAt": { "type": "number" } }, "required": [ "blocks", "createdAt", "id", "isRerequestable", "name", "ownerId", "projectId", "requires", "source", "sourceKind", "targets", "timeout", "updatedAt" ], "type": "object" }, "type": "array" } }, "required": [ "checks" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] }, "post": { "description": "Creates a new check for a project.", "operationId": "createProjectCheck", "security": [ { "bearerToken": [] } ], "summary": "Create a check", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "sourceKind": { "type": "string", "enum": [ "git-provider", "integration", "vercel", "webhook", "integration", "webhook", "git-provider" ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deletedAt": { "type": "number" } }, "required": [ "blocks", "createdAt", "id", "isRerequestable", "name", "ownerId", "projectId", "requires", "source", "sourceKind", "targets", "timeout", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } } } } }, "/v2/projects/{projectIdOrName}/checks/{checkId}": { "get": { "description": "Return a detailed response for a single check.", "operationId": "getProjectCheck", "security": [ { "bearerToken": [] } ], "summary": "Get a check", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "sourceKind": { "type": "string", "enum": [ "git-provider", "integration", "vercel", "webhook", "integration", "webhook", "git-provider" ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deletedAt": { "type": "number" } }, "required": [ "blocks", "createdAt", "id", "isRerequestable", "name", "ownerId", "projectId", "requires", "source", "sourceKind", "targets", "timeout", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] }, "patch": { "description": "Update an existing check.", "operationId": "updateProjectCheck", "security": [ { "bearerToken": [] } ], "summary": "Update a check", "tags": [ "checks-v2" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "isRerequestable": { "type": "boolean", "enum": [ false, true ] }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" } ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "sourceKind": { "type": "string", "enum": [ "git-provider", "integration", "vercel", "webhook", "integration", "webhook", "git-provider" ] }, "sourceIntegrationConfigurationId": { "type": "string" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deletedAt": { "type": "number" } }, "required": [ "blocks", "createdAt", "id", "isRerequestable", "name", "ownerId", "projectId", "requires", "source", "sourceKind", "targets", "timeout", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" ], "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" } } } } }, "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" } } ] } }, "/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": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" }, "checkId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" }, { "properties": { "subKind": { "type": "string", "enum": [ "vercel-native-check" ] }, "origin": { "type": "string", "enum": [ "api", "platform" ] } }, "type": "object", "description": "Native Vercel checks — check definition and check run `source`." } ] } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Check run backed by a project-level `check` definition." }, { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" }, "source": { "oneOf": [ { "properties": { "subKind": { "type": "string", "enum": [ "vercel-ci" ] }, "origin": { "type": "string", "enum": [ "config" ] }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" } }, "required": [ "invocationId", "jobDefinitionId", "origin", "subKind" ], "type": "object", "description": "Config-driven CI task — check run `source` only (no parent check)." }, { "properties": { "subKind": { "type": "string", "enum": [ "vercel-ci-sentinel" ] }, "origin": { "type": "string", "enum": [ "platform" ] } }, "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." }, "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" } } ] } }, "/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": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" }, "checkId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" }, { "properties": { "subKind": { "type": "string", "enum": [ "vercel-native-check" ] }, "origin": { "type": "string", "enum": [ "api", "platform" ] } }, "type": "object", "description": "Native Vercel checks — check definition and check run `source`." } ] } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Check run backed by a project-level `check` definition." }, { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" }, "source": { "oneOf": [ { "properties": { "subKind": { "type": "string", "enum": [ "vercel-ci" ] }, "origin": { "type": "string", "enum": [ "config" ] }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" } }, "required": [ "invocationId", "jobDefinitionId", "origin", "subKind" ], "type": "object", "description": "Config-driven CI task — check run `source` only (no parent check)." }, { "properties": { "subKind": { "type": "string", "enum": [ "vercel-ci-sentinel" ] }, "origin": { "type": "string", "enum": [ "platform" ] } }, "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." }, "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" } } ] }, "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": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" }, "checkId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" }, { "properties": { "subKind": { "type": "string", "enum": [ "vercel-native-check" ] }, "origin": { "type": "string", "enum": [ "api", "platform" ] } }, "type": "object", "description": "Native Vercel checks — check definition and check run `source`." } ] } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Check run backed by a project-level `check` definition." }, { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" }, "source": { "oneOf": [ { "properties": { "subKind": { "type": "string", "enum": [ "vercel-ci" ] }, "origin": { "type": "string", "enum": [ "config" ] }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" } }, "required": [ "invocationId", "jobDefinitionId", "origin", "subKind" ], "type": "object", "description": "Config-driven CI task — check run `source` only (no parent check)." }, { "properties": { "subKind": { "type": "string", "enum": [ "vercel-ci-sentinel" ] }, "origin": { "type": "string", "enum": [ "platform" ] } }, "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" } } } } } }, "/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": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" }, "checkId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" }, { "properties": { "subKind": { "type": "string", "enum": [ "vercel-native-check" ] }, "origin": { "type": "string", "enum": [ "api", "platform" ] } }, "type": "object", "description": "Native Vercel checks — check definition and check run `source`." } ] } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Check run backed by a project-level `check` definition." }, { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" }, "source": { "oneOf": [ { "properties": { "subKind": { "type": "string", "enum": [ "vercel-ci" ] }, "origin": { "type": "string", "enum": [ "config" ] }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" } }, "required": [ "invocationId", "jobDefinitionId", "origin", "subKind" ], "type": "object", "description": "Config-driven CI task — check run `source` only (no parent check)." }, { "properties": { "subKind": { "type": "string", "enum": [ "vercel-ci-sentinel" ] }, "origin": { "type": "string", "enum": [ "platform" ] } }, "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" } } ] }, "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": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" }, "checkId": { "type": "string" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "webhook" ] }, "webhookId": { "type": "string" } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "git-provider" ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] }, "externalCheckName": { "type": "string" } }, "required": [ "externalCheckName", "kind", "provider" ], "type": "object" }, { "properties": { "subKind": { "type": "string", "enum": [ "vercel-native-check" ] }, "origin": { "type": "string", "enum": [ "api", "platform" ] } }, "type": "object", "description": "Native Vercel checks — check definition and check run `source`." } ] } }, "required": [ "checkId", "createdAt", "deploymentId", "id", "name", "ownerId", "source", "status", "timeout", "updatedAt" ], "type": "object", "description": "Check run backed by a project-level `check` definition." }, { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "ownerId": { "type": "string" }, "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "requires": { "type": "string", "enum": [ "build-ready", "deployment-url", "none" ] }, "blocks": { "type": "string", "enum": [ "build-start", "deployment-alias", "deployment-promotion", "deployment-start", "none" ] }, "targets": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string", "enum": [ "completed", "queued", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "succeeded", "timeout" ] }, "conclusionText": { "type": "string" }, "externalId": { "type": "string" }, "externalUrl": { "type": "string" }, "output": { "additionalProperties": true, "type": "object" }, "timeout": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "completedAt": { "type": "number" }, "source": { "oneOf": [ { "properties": { "subKind": { "type": "string", "enum": [ "vercel-ci" ] }, "origin": { "type": "string", "enum": [ "config" ] }, "invocationId": { "type": "string" }, "jobDefinitionId": { "type": "string" } }, "required": [ "invocationId", "jobDefinitionId", "origin", "subKind" ], "type": "object", "description": "Config-driven CI task — check run `source` only (no parent check)." }, { "properties": { "subKind": { "type": "string", "enum": [ "vercel-ci-sentinel" ] }, "origin": { "type": "string", "enum": [ "platform" ] } }, "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." }, "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" } } } } } }, "/v1/deployments/{deploymentId}/checks": { "post": { "description": "Creates a new check. This endpoint must be called with an OAuth2 or it will produce a 400 error.", "operationId": "createCheck", "security": [ { "bearerToken": [] } ], "summary": "Creates a new Check", "tags": [ "checks" ], "deprecated": true, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string", "example": "chk_1a2b3c4d5e6f7g8h9i0j" }, "name": { "type": "string", "example": "Performance Check" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deploymentId": { "type": "string" }, "status": { "type": "string", "enum": [ "completed", "registered", "running" ], "example": "completed" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "stale", "succeeded" ], "example": "succeeded" }, "externalId": { "type": "string" }, "output": { "properties": { "metrics": { "properties": { "FCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "CLS": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "completedAt": { "type": "number" }, "path": { "type": "string", "example": "/api/users" }, "blocking": { "type": "boolean", "enum": [ false, true ] }, "detailsUrl": { "type": "string" }, "integrationId": { "type": "string" }, "startedAt": { "type": "number" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "blocking", "createdAt", "deploymentId", "id", "integrationId", "name", "status", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nCannot create check for finished deployment\nThe provided token is not from an OAuth2 Client" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "The deployment was not found" }, "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 } }, "get": { "description": "List all of the checks created for a deployment.", "operationId": "getAllChecks", "security": [ { "bearerToken": [] } ], "summary": "Retrieve a list of all checks", "tags": [ "checks" ], "deprecated": true, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "checks": { "items": { "properties": { "completedAt": { "type": "number" }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "stale", "succeeded" ] }, "createdAt": { "type": "number" }, "detailsUrl": { "type": "string" }, "id": { "type": "string" }, "integrationId": { "type": "string" }, "name": { "type": "string" }, "output": { "properties": { "metrics": { "properties": { "FCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "CLS": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "path": { "type": "string" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] }, "blocking": { "type": "boolean", "enum": [ false, true ] }, "startedAt": { "type": "number" }, "status": { "type": "string", "enum": [ "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" } } ] } }, "/v1/deployments/{deploymentId}/checks/{checkId}": { "get": { "description": "Return a detailed response for a single check.", "operationId": "getCheck", "security": [ { "bearerToken": [] } ], "summary": "Get a single check", "tags": [ "checks" ], "deprecated": true, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deploymentId": { "type": "string" }, "status": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "stale", "succeeded" ] }, "externalId": { "type": "string" }, "output": { "properties": { "metrics": { "properties": { "FCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "CLS": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "completedAt": { "type": "number" }, "path": { "type": "string" }, "blocking": { "type": "boolean", "enum": [ false, true ] }, "detailsUrl": { "type": "string" }, "integrationId": { "type": "string" }, "startedAt": { "type": "number" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "blocking", "createdAt", "deploymentId", "id", "integrationId", "name", "status", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource.\nThe provided token is not from an OAuth2 Client that created the Check" }, "404": { "description": "Check was not found\nThe deployment was not found" }, "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" } } ] }, "patch": { "description": "Update an existing check. This endpoint must be called with an OAuth2 or it will produce a 400 error.", "operationId": "updateCheck", "security": [ { "bearerToken": [] } ], "summary": "Update a check", "tags": [ "checks" ], "deprecated": true, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deploymentId": { "type": "string" }, "status": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "conclusion": { "type": "string", "enum": [ "canceled", "failed", "neutral", "skipped", "stale", "succeeded" ] }, "externalId": { "type": "string" }, "output": { "properties": { "metrics": { "properties": { "FCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "LCP": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "CLS": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "TBT": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" }, "virtualExperienceScore": { "properties": { "value": { "nullable": true, "type": "number" }, "previousValue": { "type": "number" }, "source": { "type": "string", "enum": [ "web-vitals" ] } }, "required": [ "source", "value" ], "type": "object" } }, "required": [ "CLS", "FCP", "LCP", "TBT" ], "type": "object" } }, "type": "object" }, "completedAt": { "type": "number" }, "path": { "type": "string" }, "blocking": { "type": "boolean", "enum": [ false, true ] }, "detailsUrl": { "type": "string" }, "integrationId": { "type": "string" }, "startedAt": { "type": "number" }, "rerequestable": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "blocking", "createdAt", "deploymentId", "id", "integrationId", "name", "status", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nThe provided token is not from an OAuth2 Client" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "Check was not found\nThe deployment was not found" }, "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 } } }, "/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" } } ] } }, "/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." }, "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" } } ] }, "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." }, "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" ] } } } } } }, "/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." }, "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" } } ] }, "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." }, "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" ] } } } } }, "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." }, "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" } } ] } }, "/v1/connect/connectors": { "post": { "description": "Create a connector from type-specific configuration and optionally link it to a project during creation.", "operationId": "createConnector", "security": [ { "bearerToken": [] } ], "summary": "Create a connector", "tags": [ "connect" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "ownerId": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "deletedAt": { "type": "number" }, "reinstallAt": { "type": "number", "description": "Time when this connector started requiring reinstallation because an installation-affecting app-token grant changed." }, "createdBy": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "id": { "type": "string" } }, "required": [ "id", "type" ], "type": "object", "description": "Principal that originally created the connector — either a Vercel user (interactive dashboard / CLI flow) or a Vercel deployment (OIDC-authenticated project, used by runtime auto-provisioning). See {@link ConnexPrincipal}. Optional: pre-existing rows from before this shape was introduced may carry no attribution at all." }, { "properties": { "type": { "type": "string", "enum": [ "project" ] }, "id": { "type": "string" }, "environment": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "development", "preview", "production" ], "x-speakeasy-name-override": "created_by_environment" } ], "title": "CreatedByEnvironmentTarget" } }, "required": [ "environment", "id", "type" ], "type": "object", "description": "Principal that originally created the connector — either a Vercel user (interactive dashboard / CLI flow) or a Vercel deployment (OIDC-authenticated project, used by runtime auto-provisioning). See {@link ConnexPrincipal}. Optional: pre-existing rows from before this shape was introduced may carry no attribution at all." } ] }, "updatedBy": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "id": { "type": "string" } }, "required": [ "id", "type" ], "type": "object", "description": "Principal that most recently mutated the connector. Same shape as {@link createdBy} but tracks the most recent updater, not the original creator. At create time the two fields point at the same principal; they diverge on the first subsequent update." }, { "properties": { "type": { "type": "string", "enum": [ "project" ] }, "id": { "type": "string" }, "environment": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "development", "preview", "production" ], "x-speakeasy-name-override": "updated_by_environment" } ], "title": "UpdatedByEnvironmentTarget" } }, "required": [ "environment", "id", "type" ], "type": "object", "description": "Principal that most recently mutated the connector. Same shape as {@link createdBy} but tracks the most recent updater, not the original creator. At create time the two fields point at the same principal; they diverge on the first subsequent update." } ] }, "creationMode": { "type": "string", "enum": [ "managed", "manual" ], "description": "How the connector row was originally created. New create paths stamp this explicitly; older rows may omit it." }, "managed": { "properties": { "sync": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "Managed-client metadata exposed without leaking the manager client or installation identifiers." }, "public": { "type": "boolean", "enum": [ false, true ] }, "uid": { "type": "string" }, "type": { "type": "string", "enum": [ "api-key", "custom", "discord", "github", "linear", "microsoft-entra", "oauth", "photon", "salesforce", "slack", "snowflake", "snowflake-wif" ] }, "service": { "type": "string", "description": "Best-effort identifier of the third-party service this client represents, independent of `type`. Examples: `'slack'`, `'mcp.linear.app'`, `'auth.example.com'`. Always non-empty on the API response — falls back through `storedClient.service ?? typeDef.service ?? typeDef.type`." }, "connectionMethod": { "type": "string", "description": "The connection method this connector was created from, when the create request named one." }, "target": { "type": "string", "description": "Which of the service's products/surfaces this connector points at." }, "name": { "type": "string" }, "clientUrl": { "nullable": true, "type": "string" }, "redirectUri": { "type": "string", "description": "Redirect URI registered with the third-party service for this client, if any. Used by `startAuthorization`/`startInstallation` to replay the exact URI back to the provider's token endpoint. Absent on clients created before this field was introduced; those callers fall back to the `https://connect.vercel.com/callback` default." }, "defaultInstallationId": { "type": "string" }, "data": { "additionalProperties": true, "type": "object" }, "typeName": { "type": "string" }, "typeIcon": { "type": "string" }, "website": { "type": "string" }, "devsite": { "type": "string" }, "docsite": { "type": "string" }, "icon": { "type": "string", "description": "Client branding icon. SHA-1 hash that resolves to the uploaded icon via the Vercel avatar service. Clients render this with `https://vercel.com/api/www/avatar/{icon}`." }, "backgroundColor": { "type": "string", "description": "Hex background color (e.g., `#000000`) for branding." }, "accentColor": { "type": "string", "description": "Hex accent color (e.g., `#000000`) for branding." }, "supportedSubjectTypes": { "items": { "type": "string" }, "type": "array" }, "appTokens": { "properties": { "crossInstallation": { "type": "boolean", "enum": [ false, true ] }, "supportsRefinement": { "type": "boolean", "enum": [ false, true ] }, "requiresReinstallation": { "type": "boolean", "enum": [ false, true ], "description": "True when changing app token grants requires reinstalling the app, so tokens cannot be partitioned independently by requester environment." }, "scopes": { "items": { "type": "string" }, "type": "array", "description": "Known allowed app-level scopes. For Slack this is the bot scope set configured on the app; for OAuth it is `scopes_supported` from the server's discovery document." }, "supportedAuthorizationDetails": { "items": { "type": "string" }, "type": "array" } }, "required": [ "crossInstallation", "supportsRefinement" ], "type": "object" }, "userTokens": { "properties": { "crossInstallation": { "type": "boolean", "enum": [ false, true ] }, "supportsRefinement": { "type": "boolean", "enum": [ false, true ] }, "scopes": { "items": { "type": "string" }, "type": "array", "description": "Known allowed user-level scopes. For Slack this is the user scope set configured on the app; for OAuth it is `scopes_supported` from the server's discovery document." }, "supportedAuthorizationDetails": { "items": { "type": "string" }, "type": "array" } }, "required": [ "crossInstallation", "supportsRefinement" ], "type": "object" }, "supportsInstallation": { "type": "boolean", "enum": [ false, true ] }, "supportsRevocation": { "type": "boolean", "enum": [ false, true ] }, "ownerTenantId": { "type": "string" }, "supportsTriggers": { "type": "boolean", "enum": [ false, true ], "description": "Whether this client type supports trigger webhooks. Derived from the type definition; indicates that `triggers` and `triggerDestinations` may be meaningful for this client." }, "supportsIcon": { "enum": [ false, "maybe", true ] }, "triggers": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled" ], "type": "object", "description": "Incoming trigger configuration. Only present when enabled." }, "events": { "items": { "type": "string" }, "type": "array", "description": "Known events this client subscribes to (e.g. Slack bot events, GitHub webhook events). Names are type-specific and validated by the managed-create flow when forwarded to the third-party service." }, "triggerDestinations": { "items": { "properties": { "projectId": { "type": "string" }, "customEnvironmentId": { "type": "string", "description": "Stable custom-environment ID to route this destination to. Mutually exclusive with `branch`; omitted destinations keep the legacy production behavior." }, "branch": { "type": "string" }, "path": { "type": "string" } }, "required": [ "projectId" ], "type": "object", "description": "Destinations that incoming triggers should be forwarded to. Limited to `MAX_CONNEX_TRIGGER_DESTINATIONS` entries." }, "type": "array", "description": "Destinations that incoming triggers should be forwarded to. Limited to `MAX_CONNEX_TRIGGER_DESTINATIONS` entries." }, "isConnectedToPrioritizedProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether this connector is linked to the project supplied through `prioritizedProjectId`. Only present on prioritized list responses." }, "includes": { "properties": { "projects": { "properties": { "items": { "items": { "properties": { "clientId": { "type": "string" }, "projectId": { "type": "string" }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "customEnvironments": { "items": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "id", "slug" ], "type": "object" }, "type": "array" } }, "required": [ "id", "name" ], "type": "object" }, "environments": { "items": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "development", "preview", "production" ], "x-speakeasy-name-override": "create_connector_environments" } ], "title": "CreateConnectorEnvironmentTarget" }, "type": "array" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "clientId", "createdAt", "environments", "projectId", "updatedAt" ], "type": "object" }, "type": "array" }, "hasMore": { "type": "boolean", "enum": [ false, true ] }, "cursor": { "nullable": true, "type": "string" } }, "required": [ "hasMore", "items" ], "type": "object", "description": "Set by `?include=projects`. Capped at 100 per client." } }, "type": "object", "description": "Optional expansions populated by `?include=...` on the list endpoint." } }, "required": [ "createdAt", "data", "id", "name", "ownerId", "public", "service", "supportedSubjectTypes", "supportsIcon", "supportsInstallation", "supportsRevocation", "supportsTriggers", "type", "typeName", "uid", "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": "" }, "409": { "description": "" }, "410": { "description": "" }, "422": { "description": "" }, "500": { "description": "" }, "502": { "description": "" } }, "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "data" ], "properties": { "data": { "anyOf": [ { "type": "object", "properties": { "serverUrl": { "type": "string" }, "serverConfig": { "type": "object", "properties": { "issuer": { "type": "string" }, "authorization_endpoint": { "type": "string" }, "token_endpoint": { "type": "string" }, "userinfo_endpoint": { "type": "string" }, "jwks_uri": { "type": "string" }, "jwks": { "type": "object", "properties": { "keys": { "type": "array", "items": { "type": "object", "properties": { "kty": { "type": "string" }, "kid": { "type": "string" }, "use": { "type": "string", "enum": [ "sig", "enc" ] }, "key_ops": { "type": "array", "items": { "type": "string" } }, "alg": { "type": "string" } }, "required": [ "kty" ], "additionalProperties": true } } }, "required": [ "keys" ], "additionalProperties": true }, "revocation_endpoint": { "type": "string" }, "introspection_endpoint": { "type": "string" }, "end_session_endpoint": { "type": "string" }, "device_authorization_endpoint": { "type": "string" }, "registration_endpoint": { "type": "string" }, "response_types_supported": { "type": "array", "items": { "type": "string" } }, "token_endpoint_auth_methods_supported": { "type": "array", "items": { "type": "string" } }, "token_endpoint_auth_signing_alg_values_supported": { "type": "array", "items": { "type": "string" } }, "scopes_supported": { "type": "array", "items": { "type": "string" } }, "grant_types_supported": { "type": "array", "items": { "type": "string" } }, "response_modes_supported": { "type": "array", "items": { "type": "string" } }, "subject_types_supported": { "type": "array", "items": { "type": "string" } }, "id_token_signing_alg_values_supported": { "type": "array", "items": { "type": "string" } }, "id_token_encryption_alg_values_supported": { "type": "array", "items": { "type": "string" } }, "id_token_encryption_enc_values_supported": { "type": "array", "items": { "type": "string" } }, "claim_types_supported": { "type": "array", "items": { "type": "string" } }, "claims_supported": { "type": "array", "items": { "type": "string" } }, "code_challenge_methods_supported": { "type": "array", "items": { "type": "string" } }, "prompt_values_supported": { "type": "array", "items": { "type": "string" } }, "claims_parameter_supported": { "type": "boolean" }, "request_parameter_supported": { "type": "boolean" }, "request_uri_parameter_supported": { "type": "boolean" }, "require_request_uri_registration": { "type": "boolean" }, "service_documentation": { "type": "string" }, "op_policy_uri": { "type": "string" }, "op_tos_uri": { "type": "string" }, "logo_uri": { "type": "string" }, "client_id_metadata_document_supported": { "type": "boolean" }, "authorization_details_types_supported": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": true, "default": {} }, "clientId": { "type": "string" }, "clientName": { "type": "string" }, "clientSecret": { "type": "string" }, "tokenEndpointAuthMethod": { "type": "string" }, "responseType": { "type": "string" }, "pkceRequired": { "type": "boolean" }, "codeChallengeMethod": { "type": "string" }, "userAuthorization": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "scopes": { "type": "array", "description": "Default scopes to request when token params specify scopes: [\\\"*\\\"].", "items": { "type": "string" } } }, "required": [ "enabled" ], "additionalProperties": false }, "refreshTokens": { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": [ "enabled" ], "additionalProperties": false }, "clientCredentials": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "scopes": { "type": "array", "description": "Default scopes to request when token params specify scopes: [\\\"*\\\"].", "items": { "type": "string" } } }, "required": [ "enabled" ], "additionalProperties": false }, "forwardedClaims": { "type": "object", "additionalProperties": false, "description": "Allow-list of extra claims to propagate, keyed by source (idToken). Only claims named here and present in that source are exposed.", "properties": { "idToken": { "type": "array", "items": { "type": "string" } } } }, "defaultAudience": { "type": "string" }, "defaultTokenExpiresIn": { "type": "number", "minimum": 60, "description": "Default token lifetime in seconds to use when the token response omits expires_in." }, "authorizationUrlParams": { "type": "object", "additionalProperties": { "type": "string" } }, "jwtBearer": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "scopes": { "type": "array", "description": "Default scopes to request when token params specify scopes: [\\\"*\\\"].", "items": { "type": "string" } }, "sub": { "type": "string" }, "iss": { "type": "string" }, "aud": { "type": "string" }, "additionalClaims": { "type": "object", "additionalProperties": {} }, "ttl": { "type": "number" }, "useClientCredentials": { "type": "boolean" } }, "additionalProperties": false }, "clientAssertion": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string" }, "ttl": { "type": "number" }, "claims": { "type": "object", "additionalProperties": {} } } } }, "required": [ "clientId" ], "additionalProperties": false, "title": "type:oauth" }, { "type": "object", "properties": { "values": { "type": "array", "items": { "type": "object", "properties": { "value": { "type": "string" }, "scope": { "type": "string" }, "expiresAt": { "type": "integer", "description": "The timestamp when the API key value expires in milliseconds." } }, "required": [ "value" ], "additionalProperties": false }, "minItems": 1 } }, "required": [ "values" ], "additionalProperties": false, "title": "type:api-key" }, { "type": "object", "properties": { "appId": { "type": "integer" }, "appSlug": { "type": "string" }, "appName": { "type": "string" }, "clientId": { "type": "string" }, "owner": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "user", "organization", "User", "Organization" ] }, "id": { "type": "integer" }, "slug": { "type": "string" }, "name": { "type": "string" } }, "required": [ "type", "id", "slug" ], "additionalProperties": false }, "clientSecret": { "type": "string" }, "privateKeyPem": { "type": "string" }, "webhookSecret": { "type": "string" }, "extras": { "type": "object", "additionalProperties": {} } }, "required": [ "appId", "appSlug", "appName", "clientId" ], "additionalProperties": false, "title": "type:github" }, { "type": "object", "properties": { "appId": { "type": "string" }, "appName": { "type": "string" }, "clientId": { "type": "string" }, "clientSecret": { "type": "string" }, "webhookSecret": { "type": "string" }, "appScopes": { "type": "array", "items": { "type": "string" } }, "userScopes": { "type": "array", "items": { "type": "string" } }, "ownerOrganization": { "type": "object", "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "logoUrl": { "type": "string", "nullable": true } }, "required": [ "id", "slug", "name" ], "additionalProperties": false }, "application": { "type": "object", "properties": { "id": { "type": "string" }, "clientId": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "developer": { "type": "string", "nullable": true }, "developerUrl": { "type": "string", "nullable": true }, "imageUrl": { "type": "string", "nullable": true }, "redirectUris": { "type": "array", "items": { "type": "string" } }, "distribution": { "type": "string", "nullable": true }, "webhookResourceTypes": { "type": "array", "items": { "type": "string" } }, "webhookUrl": { "type": "string", "nullable": true }, "webhookEnabled": { "type": "boolean" }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" } }, "required": [ "id", "clientId", "name" ], "additionalProperties": false }, "extras": { "type": "object", "additionalProperties": {} } }, "required": [ "clientId", "clientSecret" ], "additionalProperties": false, "title": "type:linear" }, { "type": "object", "properties": { "consumerKey": { "type": "string" }, "consumerSecret": { "type": "string" }, "loginHost": { "type": "string" } }, "required": [ "consumerKey", "consumerSecret", "loginHost" ], "additionalProperties": false, "title": "type:salesforce" }, { "type": "object", "properties": { "appId": { "type": "string" }, "appName": { "type": "string" }, "clientId": { "type": "string" }, "clientSecret": { "type": "string" }, "slackTeam": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "domain": { "type": "string" } }, "required": [ "id" ], "additionalProperties": false }, "signingSecret": { "type": "string" }, "verificationToken": { "type": "string" }, "botScopes": { "type": "array", "items": { "type": "string" } }, "userScopes": { "type": "array", "items": { "type": "string" } }, "extras": { "type": "object", "additionalProperties": {} } }, "required": [ "appId", "appName", "clientId", "clientSecret" ], "additionalProperties": false, "title": "type:slack" }, { "type": "object", "properties": { "clientName": { "type": "string" }, "accountIdentifier": { "type": "string" }, "defaultSessionRole": { "type": "string" }, "extras": { "type": "object", "additionalProperties": {} } }, "required": [ "accountIdentifier" ], "additionalProperties": false, "title": "type:snowflake" }, { "type": "object", "properties": { "clientName": { "type": "string" }, "accountIdentifier": { "type": "string" }, "extras": { "type": "object", "additionalProperties": {} } }, "additionalProperties": false, "title": "type:snowflake-wif" }, { "type": "object", "properties": { "projectId": { "type": "string" }, "projectSecret": { "type": "string" }, "webhookSecret": { "type": "string" } }, "required": [ "projectId", "projectSecret" ], "additionalProperties": false, "title": "type:photon" }, { "title": "type:other", "type": "object", "additionalProperties": true } ] }, "icon": { "type": "string" }, "backgroundColor": { "type": "string" }, "accentColor": { "type": "string" }, "type": { "type": "string", "description": "Known types: api-key, github, linear, oauth, photon, salesforce, slack, snowflake. Optional when \\\"connectionMethod\\\" is set." }, "service": { "type": "string", "description": "Service slug or URL for which the connector is used." }, "connectionMethod": { "type": "string", "maxLength": 64, "description": "Connection method slug of the service." }, "params": { "type": "object", "maxProperties": 16, "additionalProperties": { "type": "string", "maxLength": 256 }, "description": "Values for the connection method's templateFields." }, "target": { "type": "string", "maxLength": 64, "description": "Which of the service's targets this connector is for. Requires \\\"connectionMethod\\\" and must be one that method serves. Optional." }, "uid": { "type": "string" }, "name": { "type": "string" }, "projectId": { "type": "string", "description": "Link to the specified project when specified. See environments." }, "environments": { "description": "Use these built-in environment names or stable custom environment IDs when linking to projectId.", "type": "array", "items": { "anyOf": [ { "type": "string" }, { "type": "string", "pattern": "^env_" } ], "description": "A built-in environment name or the stable env_* ID of a custom environment." } }, "triggers": { "description": "Whether the triggers are enabled for this connector.", "type": "boolean" }, "events": { "type": "array", "description": "The list of the defaults trigger events for this connector.", "items": { "type": "string" } } } } } } } } }, "/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": { "token": { "type": "string" }, "tokenId": { "type": "string" }, "expiresAt": { "type": "number" }, "connector": { "properties": { "id": { "type": "string" }, "uid": { "type": "string" }, "type": { "type": "string" } }, "required": [ "id", "type", "uid" ], "type": "object" }, "name": { "type": "string" }, "installationId": { "type": "string" }, "tenantId": { "type": "string" }, "externalSubject": { "type": "string" }, "authorizationId": { "type": "string", "description": "Stable id correlating all tokens (including refreshes) back to the original authorization." }, "tokenGroupId": { "type": "string", "description": "Stable id that groups all tokens with the same parameters across refreshes." }, "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." }, "metadata": { "additionalProperties": true, "type": "object", "description": "Driver-specific metadata (e.g., botUserId for Slack)." } }, "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": "" }, "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/token/{connector}/import": { "post": { "description": "Import access and refresh tokens for a connector identified by the path parameter.", "operationId": "importConnectorTokens", "security": [ { "bearerToken": [] } ], "summary": "Import Connect tokens", "tags": [ "connect" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "accepted": { "type": "number" }, "imported": { "type": "number" }, "tokens": { "items": { "properties": { "name": { "type": "string" }, "data": { "additionalProperties": true, "type": "object" }, "installationId": { "type": "string" }, "audience": { "items": { "type": "string" }, "type": "array" }, "scopes": { "items": { "type": "string" }, "type": "array" }, "resources": { "items": { "type": "string" }, "type": "array" }, "authorizationDetails": { "items": { "properties": { "type": { "type": "string" } }, "required": [ "type" ], "type": "object" }, "type": "array" }, "expiresAt": { "type": "number" }, "expiresIn": { "type": "number" }, "refreshTokenExpiresAt": { "type": "number" }, "externalSubject": { "type": "string" }, "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." }, "installation": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "tenant": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id" ], "type": "object" }, "subject": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "app" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "id": { "type": "string" }, "issuer": { "type": "string" } }, "required": [ "id", "type" ], "type": "object" } ] }, "environment": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "development", "preview", "production" ], "x-speakeasy-name-override": "import_connector_tokens_connect_environment" } ], "title": "ImportConnectorTokensConnectEnvironmentTarget" }, "succeeded": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "environment", "expiresAt", "subject", "succeeded" ], "type": "object" }, "type": "array" } }, "required": [ "accepted", "imported", "tokens" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "connector", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "tokens" ], "additionalProperties": false, "properties": { "tokens": { "type": "array", "minItems": 1, "maxItems": 1000, "items": { "type": "object", "required": [ "accessToken", "expiresAt", "subject", "environment" ], "additionalProperties": false, "properties": { "accessToken": { "type": "string" }, "expiresAt": { "type": "number" }, "refreshToken": { "type": "string" }, "refreshTokenExpiresAt": { "type": "number" }, "subject": { "anyOf": [ { "title": "type:app", "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "app" ] } }, "additionalProperties": true }, { "required": [ "type", "id" ], "title": "type:user", "type": "object", "properties": { "type": { "type": "string", "enum": [ "user" ] }, "id": { "type": "string" }, "issuer": { "type": "string" } }, "additionalProperties": true } ] }, "environment": { "anyOf": [ { "type": "string", "enum": [ "development", "preview", "production" ], "x-speakeasy-name-override": "import_connector_tokens_environment" }, { "type": "string", "pattern": "^env_" } ], "description": "A built-in environment name or the stable env_* ID of a custom environment.", "title": "ImportConnectorTokensEnvironmentTarget" }, "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 } }, "name": { "type": "string" }, "externalSubject": { "type": "string" }, "installation": { "type": "object", "required": [ "id" ], "additionalProperties": false, "properties": { "id": { "type": "string" }, "name": { "type": "string" } } }, "tenant": { "type": "object", "required": [ "id" ], "additionalProperties": false, "properties": { "id": { "type": "string" }, "name": { "type": "string" } } }, "data": { "type": "object", "additionalProperties": true } } } } } } } } } } }, "/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": { "url": { "type": "string" }, "request": { "type": "string" }, "verifier": { "type": "string" }, "deviceCode": { "type": "string" }, "expiresAt": { "type": "number" }, "connector": { "properties": { "id": { "type": "string", "description": "Client id (e.g. `scl_…`)." }, "uid": { "type": "string", "description": "Client uid (e.g. `salesforce/my-org`)." }, "type": { "type": "string", "description": "Client type (e.g. `oauth`, `salesforce`)." }, "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}\"." }, "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." } }, "required": [ "id", "name", "type", "uid" ], "type": "object" } }, "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": "" }, "410": { "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" } } } } } } } } }, "/v1/connect/install/{connector}": { "post": { "description": "Create an installation request for a connector and return the URL and verifier details needed to complete the flow.", "operationId": "createConnectorInstallationRequest", "security": [ { "bearerToken": [] } ], "summary": "Create a Connect installation request", "tags": [ "connect" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "url": { "type": "string" }, "request": { "type": "string" }, "verifier": { "type": "string" }, "deviceCode": { "type": "string" }, "expiresAt": { "type": "number" }, "connector": { "properties": { "id": { "type": "string", "description": "Client id (e.g. `scl_…`)." }, "uid": { "type": "string", "description": "Client uid (e.g. `salesforce/my-org`)." }, "type": { "type": "string", "description": "Client type (e.g. `oauth`, `salesforce`)." }, "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}\"." }, "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." } }, "required": [ "id", "name", "type", "uid" ], "type": "object" } }, "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": "" }, "410": { "description": "" }, "422": { "description": "" } }, "parameters": [ { "name": "connector", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "additionalProperties": false, "properties": { "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" }, "tenantId": { "type": "string" }, "deviceCode": { "type": "boolean" }, "expiresInMs": { "type": "number" } } } } } } } }, "/v3/deployments/{idOrUrl}/events": { "get": { "description": "Get the build logs of a deployment by deployment ID and build ID. It can work as an infinite stream of logs or as a JSON endpoint depending on the input parameters.", "operationId": "getDeploymentEvents", "security": [ { "bearerToken": [] } ], "summary": "Get deployment events", "tags": [ "deployments" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] }, "created": { "type": "number" }, "payload": { "properties": { "deploymentId": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "text": { "type": "string" }, "id": { "type": "string" }, "date": { "type": "number" }, "serial": { "type": "string" }, "created": { "type": "number" }, "statusCode": { "type": "number" }, "requestId": { "type": "string" }, "proxy": { "properties": { "timestamp": { "type": "number" }, "method": { "type": "string" }, "host": { "type": "string" }, "path": { "type": "string" }, "statusCode": { "type": "number" }, "userAgent": { "items": { "type": "string" }, "type": "array" }, "referer": { "type": "string" }, "clientIp": { "type": "string" }, "region": { "type": "string" }, "scheme": { "type": "string" }, "responseByteSize": { "type": "number" }, "cacheId": { "type": "string" }, "pathType": { "type": "string" }, "pathTypeVariant": { "type": "string" }, "vercelId": { "type": "string" }, "vercelCache": { "type": "string", "enum": [ "BYPASS", "HIT", "MISS", "PRERENDER", "REVALIDATED", "STALE" ] }, "lambdaRegion": { "type": "string" }, "wafAction": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit" ] }, "wafRuleId": { "type": "string" } }, "required": [ "host", "method", "timestamp" ], "type": "object" } }, "required": [ "date", "deploymentId", "id", "serial" ], "type": "object" } }, "required": [ "created", "payload", "type" ], "type": "object" }, { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "serial": { "type": "string" }, "text": { "type": "string" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] }, "level": { "type": "string", "enum": [ "error", "warning" ] } }, "required": [ "created", "date", "deploymentId", "id", "info", "serial", "type" ], "type": "object" }, { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] }, "created": { "type": "number" }, "payload": { "properties": { "deploymentId": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "text": { "type": "string" }, "id": { "type": "string" }, "date": { "type": "number" }, "serial": { "type": "string" }, "created": { "type": "number" }, "statusCode": { "type": "number" }, "requestId": { "type": "string" }, "proxy": { "properties": { "timestamp": { "type": "number" }, "method": { "type": "string" }, "host": { "type": "string" }, "path": { "type": "string" }, "statusCode": { "type": "number" }, "userAgent": { "items": { "type": "string" }, "type": "array" }, "referer": { "type": "string" }, "clientIp": { "type": "string" }, "region": { "type": "string" }, "scheme": { "type": "string" }, "responseByteSize": { "type": "number" }, "cacheId": { "type": "string" }, "pathType": { "type": "string" }, "pathTypeVariant": { "type": "string" }, "vercelId": { "type": "string" }, "vercelCache": { "type": "string", "enum": [ "BYPASS", "HIT", "MISS", "PRERENDER", "REVALIDATED", "STALE" ] }, "lambdaRegion": { "type": "string" }, "wafAction": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit" ] }, "wafRuleId": { "type": "string" } }, "required": [ "host", "method", "timestamp" ], "type": "object" } }, "required": [ "date", "deploymentId", "id", "serial" ], "type": "object" } }, "required": [ "created", "payload", "type" ], "type": "object" }, { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "serial": { "type": "string" }, "text": { "type": "string" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] }, "level": { "type": "string", "enum": [ "error", "warning" ] } }, "required": [ "created", "date", "deploymentId", "id", "info", "serial", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "alias-assigned" ] }, "deploymentId": { "type": "string" }, "date": { "type": "number" }, "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": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "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": { "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] }, "created": { "type": "number" }, "payload": { "properties": { "deploymentId": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "text": { "type": "string" }, "id": { "type": "string" }, "date": { "type": "number" }, "serial": { "type": "string" }, "created": { "type": "number" }, "statusCode": { "type": "number" }, "requestId": { "type": "string" }, "proxy": { "properties": { "timestamp": { "type": "number" }, "method": { "type": "string" }, "host": { "type": "string" }, "path": { "type": "string" }, "statusCode": { "type": "number" }, "userAgent": { "items": { "type": "string" }, "type": "array" }, "referer": { "type": "string" }, "clientIp": { "type": "string" }, "region": { "type": "string" }, "scheme": { "type": "string" }, "responseByteSize": { "type": "number" }, "cacheId": { "type": "string" }, "pathType": { "type": "string" }, "pathTypeVariant": { "type": "string" }, "vercelId": { "type": "string" }, "vercelCache": { "type": "string", "enum": [ "BYPASS", "HIT", "MISS", "PRERENDER", "REVALIDATED", "STALE" ] }, "lambdaRegion": { "type": "string" }, "wafAction": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit" ] }, "wafRuleId": { "type": "string" } }, "required": [ "host", "method", "timestamp" ], "type": "object" } }, "required": [ "date", "deploymentId", "id", "serial" ], "type": "object" } }, "required": [ "created", "payload", "type" ], "type": "object" }, { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "serial": { "type": "string" }, "text": { "type": "string" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] }, "level": { "type": "string", "enum": [ "error", "warning" ] } }, "required": [ "created", "date", "deploymentId", "id", "info", "serial", "type" ], "type": "object" }, { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] }, "created": { "type": "number" }, "payload": { "properties": { "deploymentId": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "text": { "type": "string" }, "id": { "type": "string" }, "date": { "type": "number" }, "serial": { "type": "string" }, "created": { "type": "number" }, "statusCode": { "type": "number" }, "requestId": { "type": "string" }, "proxy": { "properties": { "timestamp": { "type": "number" }, "method": { "type": "string" }, "host": { "type": "string" }, "path": { "type": "string" }, "statusCode": { "type": "number" }, "userAgent": { "items": { "type": "string" }, "type": "array" }, "referer": { "type": "string" }, "clientIp": { "type": "string" }, "region": { "type": "string" }, "scheme": { "type": "string" }, "responseByteSize": { "type": "number" }, "cacheId": { "type": "string" }, "pathType": { "type": "string" }, "pathTypeVariant": { "type": "string" }, "vercelId": { "type": "string" }, "vercelCache": { "type": "string", "enum": [ "BYPASS", "HIT", "MISS", "PRERENDER", "REVALIDATED", "STALE" ] }, "lambdaRegion": { "type": "string" }, "wafAction": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit" ] }, "wafRuleId": { "type": "string" } }, "required": [ "host", "method", "timestamp" ], "type": "object" } }, "required": [ "date", "deploymentId", "id", "serial" ], "type": "object" } }, "required": [ "created", "payload", "type" ], "type": "object" }, { "properties": { "created": { "type": "number" }, "date": { "type": "number" }, "deploymentId": { "type": "string" }, "id": { "type": "string" }, "info": { "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "entrypoint": { "type": "string" }, "path": { "type": "string" }, "step": { "type": "string" }, "readyState": { "type": "string" } }, "required": [ "name", "type" ], "type": "object" }, "serial": { "type": "string" }, "text": { "type": "string" }, "type": { "type": "string", "enum": [ "command", "delimiter", "deployment-state", "edge-function-invocation", "exit", "fatal", "metric", "middleware", "middleware-invocation", "report", "stderr", "stdout" ] }, "level": { "type": "string", "enum": [ "error", "warning" ] } }, "required": [ "created", "date", "deploymentId", "id", "info", "serial", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "alias-assigned" ] }, "deploymentId": { "type": "string" }, "date": { "type": "number" }, "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": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "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." }, "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" } } ] } }, "/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." }, "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 } ] } } }, "additionalProperties": false } } } } } }, "/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 ] }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "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 }, "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" }, "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": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "errorCode": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" } }, "required": [ "aliasAssigned", "id", "readyState" ], "type": "object", "description": "Returns the reduced deployment view for anonymous (`vcn_`) callers. Pool-team details are withheld." }, { "properties": { "aliasAssignedAt": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "alwaysRefuseToBuild": { "type": "boolean", "enum": [ false, true ] }, "build": { "properties": { "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "env" ], "type": "object" }, "buildArtifactUrls": { "items": { "type": "string" }, "type": "array" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "additionalProperties": true, "type": "object" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "resourceConfig": { "properties": { "buildMachine": { "properties": { "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." }, "defaultPurchaseType": { "type": "string", "enum": [ "enhanced", "standard" ], "description": "The default plan type for the build machine — what the customer is *paying* for on their plan. For most customers, this is standard, but some customers have an entitlement for enhanced builds." }, "machineSelectionType": { "type": "string", "enum": [ "elastic", "fixed" ], "description": "Whether the build ran on a fixed or elastic machine. Used to drive billing for the build." }, "cores": { "type": "number", "description": "Number of cores the build machine ran with. Set at dispatch time once the build lands on a hive." }, "memory": { "type": "number", "description": "Memory, in MiB, the build machine ran with. Set at dispatch time once the build lands on a hive." } }, "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" }, "inspectorUrl": { "nullable": true, "type": "string" }, "isInConcurrentBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "isInSystemBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "projectSettings": { "properties": { "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "buildCommand": { "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", "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 ] }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" } }, "type": "object" }, "integrations": { "properties": { "status": { "type": "string", "enum": [ "error", "pending", "ready", "skipped", "timeout" ] }, "startedAt": { "type": "number" }, "claimedAt": { "type": "number" }, "completedAt": { "type": "number" }, "skippedAt": { "type": "number" }, "skippedBy": { "type": "string" } }, "required": [ "startedAt", "status" ], "type": "object" }, "images": { "properties": { "sizes": { "items": { "type": "number" }, "type": "array" }, "qualities": { "items": { "type": "number" }, "type": "array" }, "domains": { "items": { "type": "string" }, "type": "array" }, "remotePatterns": { "items": { "properties": { "protocol": { "type": "string", "enum": [ "http", "https" ], "description": "Must be `http` or `https`." }, "hostname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single subdomain. Double `**` matches any number of subdomains." }, "port": { "type": "string", "description": "Can be literal port such as `8080` or empty string meaning no port." }, "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "required": [ "hostname" ], "type": "object" }, "type": "array" }, "localPatterns": { "items": { "properties": { "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "type": "object" }, "type": "array" }, "minimumCacheTTL": { "type": "number" }, "formats": { "items": { "type": "string", "enum": [ "image/avif", "image/webp" ] }, "type": "array" }, "dangerouslyAllowSVG": { "type": "boolean", "enum": [ false, true ] }, "contentSecurityPolicy": { "type": "string" }, "contentDispositionType": { "type": "string", "enum": [ "attachment", "inline" ] } }, "type": "object" }, "alias": { "items": { "type": "string" }, "type": "array", "description": "A list of all the aliases (default aliases, staging aliases and production aliases) that were assigned upon deployment creation", "example": [] }, "aliasAssigned": { "type": "boolean", "enum": [ false, true ], "description": "A boolean that will be true when the aliases from the alias property were assigned successfully", "example": true }, "bootedAt": { "type": "number" }, "buildingAt": { "type": "number" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "creator": { "properties": { "uid": { "type": "string", "description": "The ID of the user that created the deployment", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" }, "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "initReadyAt": { "type": "number" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "id": { "type": "string" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "createdAt": { "type": "number" }, "entrypoint": { "nullable": true, "type": "string" }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "path": { "type": "string" }, "functionName": { "type": "string" } }, "required": [ "functionName", "path" ], "type": "object" }, "type": "array" } }, "required": [ "id", "output" ], "type": "object", "description": "A partial representation of a Build used by the deployment endpoint." }, "type": "array" }, "public": { "type": "boolean", "enum": [ false, true ], "description": "A boolean representing if the deployment is public or not. By default this is `false`", "example": false }, "ready": { "type": "number" }, "status": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "avatar": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object", "description": "The team that owns the deployment if any" }, "userAliases": { "items": { "type": "string" }, "type": "array", "description": "An array of domains that were provided by the user when creating the Deployment.", "example": [ "sub1.example.com", "sub2.example.com" ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "customEnvironment": { "oneOf": [ { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." }, "verification": { "items": { "properties": { "type": { "type": "string" }, "domain": { "type": "string" }, "value": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "domain", "reason", "type", "value" ], "type": "object", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." }, "type": "array", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." } }, "required": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." }, { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." } ] }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "readyStateReason": { "type": "string" }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "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 }, "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" }, "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": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "errorCode": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "aliasFinal": { "nullable": true, "type": "string" }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "description": "applies to custom domains only, defaults to `true`" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "buildErrorAt": { "type": "number" }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "deletedAt": { "nullable": true, "type": "number", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "canceledAt": { "type": "number" }, "errorLink": { "type": "string" }, "errorStep": { "type": "string" }, "passiveRegions": { "items": { "type": "string" }, "type": "array", "description": "Since November 2023 this field defines a set of regions that we will deploy the lambda to passively Lambdas will be deployed to these regions but only invoked if all of the primary `regions` are marked as out of service" }, "gitSource": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "projectId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" }, "repoUuid": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoUuid", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "owner": { "type": "string" }, "slug": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "repoPushedAt": { "type": "number" }, "ref": { "nullable": true, "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cursor-origin" ] }, "repoId": { "type": "string", "description": "Origin repository id." }, "owner": { "type": "string", "description": "Owner (namespace) slug." }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "gitUrl": { "type": "string" } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "projectId": { "type": "number" } }, "required": [ "projectId", "ref", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "owner": { "type": "string" }, "slug": { "type": "string" }, "workspaceUuid": { "type": "string" }, "repoUuid": { "type": "string" } }, "required": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "repoPushedAt": { "type": "number" } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cursor-origin" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "string" }, "owner": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "owner", "ref", "repo", "repoId", "sha", "type" ], "type": "object" } ] }, "manualProvisioning": { "properties": { "state": { "type": "string", "enum": [ "COMPLETE", "PENDING", "TIMEOUT" ], "description": "Current provisioning state" }, "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" } }, "required": [ "state" ], "type": "object", "description": "Present when deployment was created with manual provisioning enabled, either explicitly or via the experimental BYOC git flow. The deployment stays in INITIALIZING until /continue is called." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "originCacheRegion": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "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." }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "readySubstate": { "type": "string", "enum": [ "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" }, "undeletedAt": { "type": "number", "description": "A number containing the date when the deployment was undeleted at milliseconds", "example": 1540257589405 }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" }, "userConfiguredDeploymentId": { "type": "string", "description": "Since January 2025 User-configured deployment ID for skew protection with pre-built deployments. This is set when users configure a custom deploymentId in their next.config.js file. This allows Next.js to use skew protection even when deployments are pre-built outside of Vercel's build system.", "example": "abc123" }, "version": { "type": "number", "enum": [ 2 ], "description": "The platform version that was used to create the deployment.", "example": 2 }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "projectId": { "type": "string" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "type": "string" }, "createdIn": { "type": "string" }, "crons": { "items": { "properties": { "schedule": { "type": "string" }, "path": { "type": "string" } }, "required": [ "path", "schedule" ], "type": "object" }, "type": "array" }, "functions": { "nullable": true, "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "passiveConnectConfigurationId": { "type": "string", "description": "Since November 2023 this field defines a Secure Compute network that will only be used to deploy passive lambdas to (as in passiveRegions)" }, "routes": { "nullable": true, "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, 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`)." }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "middlewarePath": { "type": "string", "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." }, "middlewareRawSrc": { "items": { "type": "string" }, "type": "array", "description": "The original middleware matchers." }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object" }, { "properties": { "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "dest": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" }, { "properties": { "src": { "type": "string" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "middleware": { "type": "number", "enum": [ 0 ] } }, "required": [ "continue", "middleware", "src" ], "type": "object" } ] }, "type": "array" }, "services": { "items": { "oneOf": [ { "properties": { "schema": { "type": "string", "enum": [ "experimentalServices" ] }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "cron", "job", "web", "worker" ] }, "trigger": { "type": "string", "enum": [ "queue", "schedule", "workflow" ] }, "group": { "type": "string" }, "workspace": { "type": "string" }, "entrypoint": { "type": "string" }, "framework": { "type": "string" }, "builder": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "properties": { "bunVersion": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "ldsflags": { "type": "string" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "rust": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "functions": { "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "projectSettings": { "properties": { "framework": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" } }, "type": "object" }, "outputDirectory": { "type": "string" }, "installCommand": { "type": "string" }, "buildCommand": { "type": "string" }, "devCommand": { "type": "string" }, "framework": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." } }, "type": "object" } }, "required": [ "use" ], "type": "object" }, "runtime": { "type": "string" }, "buildCommand": { "type": "string" }, "installCommand": { "type": "string" }, "preDeployCommand": { "type": "string" }, "routePrefix": { "type": "string" }, "routePrefixSource": { "type": "string", "enum": [ "configured", "generated" ] }, "subdomain": { "type": "string" }, "schedule": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "handlerFunction": { "type": "string" }, "topics": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "items": { "properties": { "topic": { "type": "string" }, "retryAfterSeconds": { "type": "number" }, "initialDelaySeconds": { "type": "number" } }, "required": [ "topic" ], "type": "object" }, "type": "array" } ] }, "env": { "additionalProperties": { "properties": { "type": { "type": "string", "enum": [ "service-ref" ] }, "service": { "type": "string" } }, "required": [ "service", "type" ], "type": "object" }, "type": "object" } }, "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": { "schema": { "type": "string", "enum": [ "experimentalServicesV2" ] }, "name": { "type": "string" }, "root": { "type": "string", "description": "Path to the service root, relative to the project root." }, "framework": { "type": "string" }, "runtime": { "type": "string" }, "entrypoint": { "type": "string", "description": "Resolved entrypoint, relative to the service root." }, "command": { "items": { "type": "string" }, "type": "array", "description": "Command override for `runtime: \"container\"` services." }, "builder": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "properties": { "bunVersion": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "ldsflags": { "type": "string" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "rust": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "functions": { "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "projectSettings": { "properties": { "framework": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" } }, "type": "object" }, "outputDirectory": { "type": "string" }, "installCommand": { "type": "string" }, "buildCommand": { "type": "string" }, "devCommand": { "type": "string" }, "framework": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." } }, "type": "object" } }, "required": [ "use" ], "type": "object", "description": "Builder selected by the resolver." }, "installCommand": { "type": "string" }, "buildCommand": { "type": "string" }, "devCommand": { "type": "string" }, "ignoreCommand": { "type": "string" }, "outputDirectory": { "type": "string" }, "bindings": { "items": { "properties": { "type": { "type": "string", "enum": [ "service" ], "description": "If present, must be `\"service\"` for Service-to-Service HTTP bindings." }, "service": { "type": "string", "description": "Target service name from `services`." }, "format": { "type": "string", "enum": [ "url" ], "description": "Generated value shape, must be `\"url\"`." }, "env": { "type": "string", "description": "Environment variable name that will store the generated value" } }, "required": [ "env", "format", "service" ], "type": "object", "description": "Caller-side bindings to other services." }, "type": "array", "description": "Caller-side bindings to other services." }, "functions": { "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "Function configuration scoped to this service." }, "type": "object", "description": "Function configuration scoped to this service." }, "headers": { "items": { "properties": { "source": { "type": "string" }, "headers": { "items": { "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "headers", "source" ], "type": "object" }, "type": "array" }, "redirects": { "items": { "properties": { "source": { "type": "string" }, "destination": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "statusCode": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "rewrites": { "items": { "properties": { "source": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "statusCode": { "type": "number" }, "env": { "items": { "type": "string" }, "type": "array" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "routes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, 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`)." }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "middlewarePath": { "type": "string", "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." }, "middlewareRawSrc": { "items": { "type": "string" }, "type": "array", "description": "The original middleware matchers." }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object" }, { "properties": { "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "dest": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" } ] }, "type": "array" }, "cleanUrls": { "type": "boolean", "enum": [ false, true ] }, "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." }, "gitRepo": { "nullable": true, "oneOf": [ { "properties": { "namespace": { "type": "string" }, "projectId": { "type": "number" }, "type": { "type": "string", "enum": [ "gitlab" ] }, "url": { "type": "string" }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "namespace", "ownerType", "path", "private", "projectId", "type", "url" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github" ] }, "repoOwnerId": { "type": "number" }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "repoId", "repoOwnerId", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "repoUuid": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repoUuid", "slug", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug." }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repo", "repoId", "type" ], "type": "object" } ] }, "flags": { "oneOf": [ { "properties": { "definitions": { "additionalProperties": { "properties": { "options": { "items": { "properties": { "value": { "$ref": "#/components/schemas/FlagJSONValue" }, "label": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "url": { "type": "string" }, "description": { "type": "string" } }, "type": "object" }, "type": "object" } }, "required": [ "definitions" ], "type": "object", "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." }, { "items": { "type": "object", "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." }, "type": "array", "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "mfeConfigUploadState": { "type": "string", "enum": [ "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." }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds", "isDefaultApp" ], "type": "object" } ] }, "platform": { "properties": { "source": { "properties": { "name": { "type": "string", "description": "Display name of the platform." } }, "required": [ "name" ], "type": "object", "description": "The external platform that created the deployment (e.g. its display name)." }, "origin": { "properties": { "type": { "type": "string", "enum": [ "id", "url" ], "description": "Whether the value is an opaque identifier or a URL." }, "value": { "type": "string", "description": "The identifier or URL pointing to the originating entity." } }, "required": [ "type", "value" ], "type": "object", "description": "Reference back to the entity on the platform that initiated the deployment." }, "creator": { "properties": { "name": { "type": "string", "description": "Display name of the platform user." }, "avatar": { "type": "string", "description": "URL of the platform user's avatar image." } }, "required": [ "name" ], "type": "object", "description": "The user on the external platform who triggered the deployment." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Arbitrary key-value metadata provided by the platform." } }, "required": [ "creator", "origin", "source" ], "type": "object", "description": "Metadata about the source platform that triggered the deployment. Allows us to map a deployment back to a platform (e.g. the chat that created it)" }, "config": { "properties": { "version": { "type": "number" }, "functionType": { "type": "string", "enum": [ "fluid", "standard" ] }, "functionMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionTimeout": { "nullable": true, "type": "number" }, "secureComputePrimaryRegion": { "nullable": true, "type": "string" }, "secureComputeFallbackRegion": { "nullable": true, "type": "string" }, "isUsingActiveCPU": { "type": "boolean", "enum": [ false, true ] }, "resourceConfig": { "properties": { "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ], "description": "Build resource configuration snapshot for this deployment." } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." }, "elasticConcurrency": { "type": "string", "enum": [ "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." } }, "required": [ "functionMemoryType", "functionTimeout", "functionType", "secureComputeFallbackRegion", "secureComputePrimaryRegion" ], "type": "object", "description": "Since February 2025 the configuration must include snapshot data at the time of deployment creation to capture properties for the /deployments/:id/config endpoint utilized for displaying Deployment Configuration on the frontend This is optional because older deployments may not have this data captured" }, "checks": { "properties": { "deployment-alias": { "properties": { "state": { "type": "string", "enum": [ "failed", "pending", "succeeded" ] }, "startedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "startedAt", "state" ], "type": "object", "description": "Condensed check data. Retrieve individual check and check run data using api-checks v2 routes." } }, "required": [ "deployment-alias" ], "type": "object" }, "seatBlock": { "properties": { "blockCode": { "type": "string", "enum": [ "COMMIT_AUTHOR_REQUIRED", "TEAM_ACCESS_REQUIRED" ], "description": "The NSNB decision code for the seat block. TODO: We should consolidate block types." }, "userId": { "type": "string", "description": "The blocked vercel user ID." }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Determines if the user was verified during the block. In the git integration case, the commit sender was the author." }, "gitUserId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gitProvider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ], "description": "The git provider type associated with gitUserId." } }, "required": [ "blockCode" ], "type": "object", "description": "NSNB Blocked metadata" }, "attribution": { "properties": { "commitMeta": { "properties": { "email": { "type": "string", "description": "Email from git commit author" }, "name": { "type": "string", "description": "Name from git commit author" }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Whether the commit was signed/verified (GitHub only, others return undefined)" } }, "type": "object", "description": "Commit metadata from the git commit author" }, "gitUser": { "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "login": { "type": "string", "description": "Git provider username/login" }, "type": { "type": "string", "description": "User type" }, "provider": { "type": "string", "description": "The git provider (github, gitlab, bitbucket)" } }, "required": [ "id", "login" ], "type": "object", "description": "Git provider user associated with the commit author email (only set if resolved)" }, "vercelUser": { "properties": { "id": { "type": "string", "description": "Vercel user ID" }, "username": { "type": "string", "description": "Vercel username" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Team roles at time of deployment" } }, "required": [ "id", "username" ], "type": "object", "description": "Vercel user linked to the git provider account (only set if resolved)" } }, "type": "object", "description": "Attribution metadata for the deployment, linking commit author to git and Vercel users. Only populated when the `enable-deployment-attribution` flag is enabled." } }, "required": [ "aliasAssigned", "bootedAt", "build", "buildSkipped", "buildingAt", "createdAt", "createdIn", "creator", "env", "id", "inspectorUrl", "isInConcurrentBuildsQueue", "isInSystemBuildsQueue", "meta", "name", "ownerId", "plan", "projectId", "projectSettings", "public", "readyState", "regions", "routes", "status", "type", "url", "version" ], "type": "object", "description": "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 }, "bootedAt": { "type": "number" }, "buildingAt": { "type": "number" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "creator": { "properties": { "uid": { "type": "string", "description": "The ID of the user that created the deployment", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" }, "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "initReadyAt": { "type": "number" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "id": { "type": "string" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "createdAt": { "type": "number" }, "entrypoint": { "nullable": true, "type": "string" }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "path": { "type": "string" }, "functionName": { "type": "string" } }, "required": [ "functionName", "path" ], "type": "object" }, "type": "array" } }, "required": [ "id", "output" ], "type": "object", "description": "A partial representation of a Build used by the deployment endpoint." }, "type": "array" }, "public": { "type": "boolean", "enum": [ false, true ], "description": "A boolean representing if the deployment is public or not. By default this is `false`", "example": false }, "ready": { "type": "number" }, "status": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "avatar": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object", "description": "The team that owns the deployment if any" }, "userAliases": { "items": { "type": "string" }, "type": "array", "description": "An array of domains that were provided by the user when creating the Deployment.", "example": [ "sub1.example.com", "sub2.example.com" ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "customEnvironment": { "oneOf": [ { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." }, "verification": { "items": { "properties": { "type": { "type": "string" }, "domain": { "type": "string" }, "value": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "domain", "reason", "type", "value" ], "type": "object", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." }, "type": "array", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." } }, "required": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." }, { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." } ] }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "readyStateReason": { "type": "string" }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "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 }, "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" }, "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": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "errorCode": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "aliasFinal": { "nullable": true, "type": "string" }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "description": "applies to custom domains only, defaults to `true`" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "buildErrorAt": { "type": "number" }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "deletedAt": { "nullable": true, "type": "number", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "canceledAt": { "type": "number" }, "errorLink": { "type": "string" }, "errorStep": { "type": "string" }, "passiveRegions": { "items": { "type": "string" }, "type": "array", "description": "Since November 2023 this field defines a set of regions that we will deploy the lambda to passively Lambdas will be deployed to these regions but only invoked if all of the primary `regions` are marked as out of service" }, "gitSource": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "projectId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" }, "repoUuid": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoUuid", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "owner": { "type": "string" }, "slug": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "repoPushedAt": { "type": "number" }, "ref": { "nullable": true, "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cursor-origin" ] }, "repoId": { "type": "string", "description": "Origin repository id." }, "owner": { "type": "string", "description": "Owner (namespace) slug." }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "gitUrl": { "type": "string" } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "projectId": { "type": "number" } }, "required": [ "projectId", "ref", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "owner": { "type": "string" }, "slug": { "type": "string" }, "workspaceUuid": { "type": "string" }, "repoUuid": { "type": "string" } }, "required": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "repoPushedAt": { "type": "number" } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cursor-origin" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "string" }, "owner": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "owner", "ref", "repo", "repoId", "sha", "type" ], "type": "object" } ] }, "manualProvisioning": { "properties": { "state": { "type": "string", "enum": [ "COMPLETE", "PENDING", "TIMEOUT" ], "description": "Current provisioning state" }, "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" } }, "required": [ "state" ], "type": "object", "description": "Present when deployment was created with manual provisioning enabled, either explicitly or via the experimental BYOC git flow. The deployment stays in INITIALIZING until /continue is called." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "originCacheRegion": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "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." }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "readySubstate": { "type": "string", "enum": [ "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" }, "undeletedAt": { "type": "number", "description": "A number containing the date when the deployment was undeleted at milliseconds", "example": 1540257589405 }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" }, "userConfiguredDeploymentId": { "type": "string", "description": "Since January 2025 User-configured deployment ID for skew protection with pre-built deployments. This is set when users configure a custom deploymentId in their next.config.js file. This allows Next.js to use skew protection even when deployments are pre-built outside of Vercel's build system.", "example": "abc123" }, "version": { "type": "number", "enum": [ 2 ], "description": "The platform version that was used to create the deployment.", "example": 2 }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" } }, "required": [ "aliasAssigned", "bootedAt", "buildSkipped", "buildingAt", "createdAt", "creator", "id", "meta", "name", "public", "readyState", "regions", "status", "type", "url", "version" ], "type": "object", "description": "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" } } ] } }, "/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 ] }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "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 }, "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" }, "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": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "errorCode": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" } }, "required": [ "aliasAssigned", "id", "readyState" ], "type": "object", "description": "Returns the reduced deployment view for anonymous (`vcn_`) callers. Pool-team details are withheld." }, { "properties": { "aliasAssignedAt": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "alwaysRefuseToBuild": { "type": "boolean", "enum": [ false, true ] }, "build": { "properties": { "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "env" ], "type": "object" }, "buildArtifactUrls": { "items": { "type": "string" }, "type": "array" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "additionalProperties": true, "type": "object" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "resourceConfig": { "properties": { "buildMachine": { "properties": { "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." }, "defaultPurchaseType": { "type": "string", "enum": [ "enhanced", "standard" ], "description": "The default plan type for the build machine — what the customer is *paying* for on their plan. For most customers, this is standard, but some customers have an entitlement for enhanced builds." }, "machineSelectionType": { "type": "string", "enum": [ "elastic", "fixed" ], "description": "Whether the build ran on a fixed or elastic machine. Used to drive billing for the build." }, "cores": { "type": "number", "description": "Number of cores the build machine ran with. Set at dispatch time once the build lands on a hive." }, "memory": { "type": "number", "description": "Memory, in MiB, the build machine ran with. Set at dispatch time once the build lands on a hive." } }, "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" }, "inspectorUrl": { "nullable": true, "type": "string" }, "isInConcurrentBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "isInSystemBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "projectSettings": { "properties": { "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "buildCommand": { "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", "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 ] }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" } }, "type": "object" }, "integrations": { "properties": { "status": { "type": "string", "enum": [ "error", "pending", "ready", "skipped", "timeout" ] }, "startedAt": { "type": "number" }, "claimedAt": { "type": "number" }, "completedAt": { "type": "number" }, "skippedAt": { "type": "number" }, "skippedBy": { "type": "string" } }, "required": [ "startedAt", "status" ], "type": "object" }, "images": { "properties": { "sizes": { "items": { "type": "number" }, "type": "array" }, "qualities": { "items": { "type": "number" }, "type": "array" }, "domains": { "items": { "type": "string" }, "type": "array" }, "remotePatterns": { "items": { "properties": { "protocol": { "type": "string", "enum": [ "http", "https" ], "description": "Must be `http` or `https`." }, "hostname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single subdomain. Double `**` matches any number of subdomains." }, "port": { "type": "string", "description": "Can be literal port such as `8080` or empty string meaning no port." }, "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "required": [ "hostname" ], "type": "object" }, "type": "array" }, "localPatterns": { "items": { "properties": { "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "type": "object" }, "type": "array" }, "minimumCacheTTL": { "type": "number" }, "formats": { "items": { "type": "string", "enum": [ "image/avif", "image/webp" ] }, "type": "array" }, "dangerouslyAllowSVG": { "type": "boolean", "enum": [ false, true ] }, "contentSecurityPolicy": { "type": "string" }, "contentDispositionType": { "type": "string", "enum": [ "attachment", "inline" ] } }, "type": "object" }, "alias": { "items": { "type": "string" }, "type": "array", "description": "A list of all the aliases (default aliases, staging aliases and production aliases) that were assigned upon deployment creation", "example": [] }, "aliasAssigned": { "type": "boolean", "enum": [ false, true ], "description": "A boolean that will be true when the aliases from the alias property were assigned successfully", "example": true }, "bootedAt": { "type": "number" }, "buildingAt": { "type": "number" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "creator": { "properties": { "uid": { "type": "string", "description": "The ID of the user that created the deployment", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" }, "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "initReadyAt": { "type": "number" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "id": { "type": "string" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "createdAt": { "type": "number" }, "entrypoint": { "nullable": true, "type": "string" }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "path": { "type": "string" }, "functionName": { "type": "string" } }, "required": [ "functionName", "path" ], "type": "object" }, "type": "array" } }, "required": [ "id", "output" ], "type": "object", "description": "A partial representation of a Build used by the deployment endpoint." }, "type": "array" }, "public": { "type": "boolean", "enum": [ false, true ], "description": "A boolean representing if the deployment is public or not. By default this is `false`", "example": false }, "ready": { "type": "number" }, "status": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "avatar": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object", "description": "The team that owns the deployment if any" }, "userAliases": { "items": { "type": "string" }, "type": "array", "description": "An array of domains that were provided by the user when creating the Deployment.", "example": [ "sub1.example.com", "sub2.example.com" ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "customEnvironment": { "oneOf": [ { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." }, "verification": { "items": { "properties": { "type": { "type": "string" }, "domain": { "type": "string" }, "value": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "domain", "reason", "type", "value" ], "type": "object", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." }, "type": "array", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." } }, "required": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." }, { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." } ] }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "readyStateReason": { "type": "string" }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "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 }, "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" }, "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": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "errorCode": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "aliasFinal": { "nullable": true, "type": "string" }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "description": "applies to custom domains only, defaults to `true`" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "buildErrorAt": { "type": "number" }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "deletedAt": { "nullable": true, "type": "number", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "canceledAt": { "type": "number" }, "errorLink": { "type": "string" }, "errorStep": { "type": "string" }, "passiveRegions": { "items": { "type": "string" }, "type": "array", "description": "Since November 2023 this field defines a set of regions that we will deploy the lambda to passively Lambdas will be deployed to these regions but only invoked if all of the primary `regions` are marked as out of service" }, "gitSource": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "projectId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" }, "repoUuid": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoUuid", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "owner": { "type": "string" }, "slug": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "repoPushedAt": { "type": "number" }, "ref": { "nullable": true, "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cursor-origin" ] }, "repoId": { "type": "string", "description": "Origin repository id." }, "owner": { "type": "string", "description": "Owner (namespace) slug." }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "gitUrl": { "type": "string" } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "projectId": { "type": "number" } }, "required": [ "projectId", "ref", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "owner": { "type": "string" }, "slug": { "type": "string" }, "workspaceUuid": { "type": "string" }, "repoUuid": { "type": "string" } }, "required": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "repoPushedAt": { "type": "number" } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cursor-origin" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "string" }, "owner": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "owner", "ref", "repo", "repoId", "sha", "type" ], "type": "object" } ] }, "manualProvisioning": { "properties": { "state": { "type": "string", "enum": [ "COMPLETE", "PENDING", "TIMEOUT" ], "description": "Current provisioning state" }, "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" } }, "required": [ "state" ], "type": "object", "description": "Present when deployment was created with manual provisioning enabled, either explicitly or via the experimental BYOC git flow. The deployment stays in INITIALIZING until /continue is called." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "originCacheRegion": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "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." }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "readySubstate": { "type": "string", "enum": [ "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" }, "undeletedAt": { "type": "number", "description": "A number containing the date when the deployment was undeleted at milliseconds", "example": 1540257589405 }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" }, "userConfiguredDeploymentId": { "type": "string", "description": "Since January 2025 User-configured deployment ID for skew protection with pre-built deployments. This is set when users configure a custom deploymentId in their next.config.js file. This allows Next.js to use skew protection even when deployments are pre-built outside of Vercel's build system.", "example": "abc123" }, "version": { "type": "number", "enum": [ 2 ], "description": "The platform version that was used to create the deployment.", "example": 2 }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "projectId": { "type": "string" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "type": "string" }, "createdIn": { "type": "string" }, "crons": { "items": { "properties": { "schedule": { "type": "string" }, "path": { "type": "string" } }, "required": [ "path", "schedule" ], "type": "object" }, "type": "array" }, "functions": { "nullable": true, "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "passiveConnectConfigurationId": { "type": "string", "description": "Since November 2023 this field defines a Secure Compute network that will only be used to deploy passive lambdas to (as in passiveRegions)" }, "routes": { "nullable": true, "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, 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`)." }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "middlewarePath": { "type": "string", "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." }, "middlewareRawSrc": { "items": { "type": "string" }, "type": "array", "description": "The original middleware matchers." }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object" }, { "properties": { "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "dest": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" }, { "properties": { "src": { "type": "string" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "middleware": { "type": "number", "enum": [ 0 ] } }, "required": [ "continue", "middleware", "src" ], "type": "object" } ] }, "type": "array" }, "services": { "items": { "oneOf": [ { "properties": { "schema": { "type": "string", "enum": [ "experimentalServices" ] }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "cron", "job", "web", "worker" ] }, "trigger": { "type": "string", "enum": [ "queue", "schedule", "workflow" ] }, "group": { "type": "string" }, "workspace": { "type": "string" }, "entrypoint": { "type": "string" }, "framework": { "type": "string" }, "builder": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "properties": { "bunVersion": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "ldsflags": { "type": "string" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "rust": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "functions": { "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "projectSettings": { "properties": { "framework": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" } }, "type": "object" }, "outputDirectory": { "type": "string" }, "installCommand": { "type": "string" }, "buildCommand": { "type": "string" }, "devCommand": { "type": "string" }, "framework": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." } }, "type": "object" } }, "required": [ "use" ], "type": "object" }, "runtime": { "type": "string" }, "buildCommand": { "type": "string" }, "installCommand": { "type": "string" }, "preDeployCommand": { "type": "string" }, "routePrefix": { "type": "string" }, "routePrefixSource": { "type": "string", "enum": [ "configured", "generated" ] }, "subdomain": { "type": "string" }, "schedule": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "handlerFunction": { "type": "string" }, "topics": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "items": { "properties": { "topic": { "type": "string" }, "retryAfterSeconds": { "type": "number" }, "initialDelaySeconds": { "type": "number" } }, "required": [ "topic" ], "type": "object" }, "type": "array" } ] }, "env": { "additionalProperties": { "properties": { "type": { "type": "string", "enum": [ "service-ref" ] }, "service": { "type": "string" } }, "required": [ "service", "type" ], "type": "object" }, "type": "object" } }, "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": { "schema": { "type": "string", "enum": [ "experimentalServicesV2" ] }, "name": { "type": "string" }, "root": { "type": "string", "description": "Path to the service root, relative to the project root." }, "framework": { "type": "string" }, "runtime": { "type": "string" }, "entrypoint": { "type": "string", "description": "Resolved entrypoint, relative to the service root." }, "command": { "items": { "type": "string" }, "type": "array", "description": "Command override for `runtime: \"container\"` services." }, "builder": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "properties": { "bunVersion": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "ldsflags": { "type": "string" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "rust": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "functions": { "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "projectSettings": { "properties": { "framework": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" } }, "type": "object" }, "outputDirectory": { "type": "string" }, "installCommand": { "type": "string" }, "buildCommand": { "type": "string" }, "devCommand": { "type": "string" }, "framework": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." } }, "type": "object" } }, "required": [ "use" ], "type": "object", "description": "Builder selected by the resolver." }, "installCommand": { "type": "string" }, "buildCommand": { "type": "string" }, "devCommand": { "type": "string" }, "ignoreCommand": { "type": "string" }, "outputDirectory": { "type": "string" }, "bindings": { "items": { "properties": { "type": { "type": "string", "enum": [ "service" ], "description": "If present, must be `\"service\"` for Service-to-Service HTTP bindings." }, "service": { "type": "string", "description": "Target service name from `services`." }, "format": { "type": "string", "enum": [ "url" ], "description": "Generated value shape, must be `\"url\"`." }, "env": { "type": "string", "description": "Environment variable name that will store the generated value" } }, "required": [ "env", "format", "service" ], "type": "object", "description": "Caller-side bindings to other services." }, "type": "array", "description": "Caller-side bindings to other services." }, "functions": { "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "Function configuration scoped to this service." }, "type": "object", "description": "Function configuration scoped to this service." }, "headers": { "items": { "properties": { "source": { "type": "string" }, "headers": { "items": { "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "headers", "source" ], "type": "object" }, "type": "array" }, "redirects": { "items": { "properties": { "source": { "type": "string" }, "destination": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "statusCode": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "rewrites": { "items": { "properties": { "source": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "statusCode": { "type": "number" }, "env": { "items": { "type": "string" }, "type": "array" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "routes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, 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`)." }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "middlewarePath": { "type": "string", "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." }, "middlewareRawSrc": { "items": { "type": "string" }, "type": "array", "description": "The original middleware matchers." }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object" }, { "properties": { "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "dest": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" } ] }, "type": "array" }, "cleanUrls": { "type": "boolean", "enum": [ false, true ] }, "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." }, "gitRepo": { "nullable": true, "oneOf": [ { "properties": { "namespace": { "type": "string" }, "projectId": { "type": "number" }, "type": { "type": "string", "enum": [ "gitlab" ] }, "url": { "type": "string" }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "namespace", "ownerType", "path", "private", "projectId", "type", "url" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github" ] }, "repoOwnerId": { "type": "number" }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "repoId", "repoOwnerId", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "repoUuid": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repoUuid", "slug", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug." }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repo", "repoId", "type" ], "type": "object" } ] }, "flags": { "oneOf": [ { "properties": { "definitions": { "additionalProperties": { "properties": { "options": { "items": { "properties": { "value": { "$ref": "#/components/schemas/FlagJSONValue" }, "label": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "url": { "type": "string" }, "description": { "type": "string" } }, "type": "object" }, "type": "object" } }, "required": [ "definitions" ], "type": "object", "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." }, { "items": { "type": "object", "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." }, "type": "array", "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "mfeConfigUploadState": { "type": "string", "enum": [ "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." }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds", "isDefaultApp" ], "type": "object" } ] }, "platform": { "properties": { "source": { "properties": { "name": { "type": "string", "description": "Display name of the platform." } }, "required": [ "name" ], "type": "object", "description": "The external platform that created the deployment (e.g. its display name)." }, "origin": { "properties": { "type": { "type": "string", "enum": [ "id", "url" ], "description": "Whether the value is an opaque identifier or a URL." }, "value": { "type": "string", "description": "The identifier or URL pointing to the originating entity." } }, "required": [ "type", "value" ], "type": "object", "description": "Reference back to the entity on the platform that initiated the deployment." }, "creator": { "properties": { "name": { "type": "string", "description": "Display name of the platform user." }, "avatar": { "type": "string", "description": "URL of the platform user's avatar image." } }, "required": [ "name" ], "type": "object", "description": "The user on the external platform who triggered the deployment." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Arbitrary key-value metadata provided by the platform." } }, "required": [ "creator", "origin", "source" ], "type": "object", "description": "Metadata about the source platform that triggered the deployment. Allows us to map a deployment back to a platform (e.g. the chat that created it)" }, "config": { "properties": { "version": { "type": "number" }, "functionType": { "type": "string", "enum": [ "fluid", "standard" ] }, "functionMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionTimeout": { "nullable": true, "type": "number" }, "secureComputePrimaryRegion": { "nullable": true, "type": "string" }, "secureComputeFallbackRegion": { "nullable": true, "type": "string" }, "isUsingActiveCPU": { "type": "boolean", "enum": [ false, true ] }, "resourceConfig": { "properties": { "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ], "description": "Build resource configuration snapshot for this deployment." } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." }, "elasticConcurrency": { "type": "string", "enum": [ "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." } }, "required": [ "functionMemoryType", "functionTimeout", "functionType", "secureComputeFallbackRegion", "secureComputePrimaryRegion" ], "type": "object", "description": "Since February 2025 the configuration must include snapshot data at the time of deployment creation to capture properties for the /deployments/:id/config endpoint utilized for displaying Deployment Configuration on the frontend This is optional because older deployments may not have this data captured" }, "checks": { "properties": { "deployment-alias": { "properties": { "state": { "type": "string", "enum": [ "failed", "pending", "succeeded" ] }, "startedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "startedAt", "state" ], "type": "object", "description": "Condensed check data. Retrieve individual check and check run data using api-checks v2 routes." } }, "required": [ "deployment-alias" ], "type": "object" }, "seatBlock": { "properties": { "blockCode": { "type": "string", "enum": [ "COMMIT_AUTHOR_REQUIRED", "TEAM_ACCESS_REQUIRED" ], "description": "The NSNB decision code for the seat block. TODO: We should consolidate block types." }, "userId": { "type": "string", "description": "The blocked vercel user ID." }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Determines if the user was verified during the block. In the git integration case, the commit sender was the author." }, "gitUserId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gitProvider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ], "description": "The git provider type associated with gitUserId." } }, "required": [ "blockCode" ], "type": "object", "description": "NSNB Blocked metadata" }, "attribution": { "properties": { "commitMeta": { "properties": { "email": { "type": "string", "description": "Email from git commit author" }, "name": { "type": "string", "description": "Name from git commit author" }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Whether the commit was signed/verified (GitHub only, others return undefined)" } }, "type": "object", "description": "Commit metadata from the git commit author" }, "gitUser": { "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "login": { "type": "string", "description": "Git provider username/login" }, "type": { "type": "string", "description": "User type" }, "provider": { "type": "string", "description": "The git provider (github, gitlab, bitbucket)" } }, "required": [ "id", "login" ], "type": "object", "description": "Git provider user associated with the commit author email (only set if resolved)" }, "vercelUser": { "properties": { "id": { "type": "string", "description": "Vercel user ID" }, "username": { "type": "string", "description": "Vercel username" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Team roles at time of deployment" } }, "required": [ "id", "username" ], "type": "object", "description": "Vercel user linked to the git provider account (only set if resolved)" } }, "type": "object", "description": "Attribution metadata for the deployment, linking commit author to git and Vercel users. Only populated when the `enable-deployment-attribution` flag is enabled." } }, "required": [ "aliasAssigned", "bootedAt", "build", "buildSkipped", "buildingAt", "createdAt", "createdIn", "creator", "env", "id", "inspectorUrl", "isInConcurrentBuildsQueue", "isInSystemBuildsQueue", "meta", "name", "ownerId", "plan", "projectId", "projectSettings", "public", "readyState", "regions", "routes", "status", "type", "url", "version" ], "type": "object", "description": "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": { "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": "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" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" } }, "required": [ "type", "sha" ], "type": "object" }, { "properties": { "ref": { "type": "string", "example": "main" }, "repoId": { "oneOf": [ { "type": "number" }, { "type": "string" } ], "example": 123456789 }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "github" ], "type": "string" } }, "required": [ "type", "ref", "repoId" ], "type": "object" }, { "properties": { "org": { "type": "string", "example": "vercel" }, "ref": { "type": "string", "example": "main" }, "repo": { "type": "string", "example": "next.js" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "github" ], "type": "string" } }, "required": [ "type", "ref", "org", "repo" ], "type": "object" }, { "properties": { "ref": { "type": "string", "example": "main" }, "repoId": { "oneOf": [ { "type": "number" }, { "type": "string" } ], "example": 123456789 }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "github-limited" ], "type": "string" } }, "required": [ "type", "ref", "repoId" ], "type": "object" }, { "properties": { "org": { "type": "string", "example": "vercel" }, "ref": { "type": "string", "example": "main" }, "repo": { "type": "string", "example": "next.js" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "github-limited" ], "type": "string" } }, "required": [ "type", "ref", "org", "repo" ], "type": "object" }, { "properties": { "projectId": { "oneOf": [ { "type": "number" }, { "type": "string" } ], "example": 987654321 }, "ref": { "type": "string", "example": "main" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "gitlab" ], "type": "string" } }, "required": [ "type", "ref", "projectId" ], "type": "object" }, { "properties": { "ref": { "type": "string", "example": "main" }, "repoUuid": { "type": "string", "example": "123e4567-e89b-12d3-a456-426614174000" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "type": { "enum": [ "bitbucket" ], "type": "string" }, "workspaceUuid": { "type": "string", "example": "987e6543-e21b-12d3-a456-426614174000" } }, "required": [ "type", "ref", "repoUuid" ], "type": "object" }, { "properties": { "owner": { "type": "string", "example": "bitbucket_user" }, "ref": { "type": "string", "example": "main" }, "sha": { "type": "string", "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" }, "slug": { "type": "string", "example": "my-awesome-project" }, "type": { "enum": [ "bitbucket" ], "type": "string" } }, "required": [ "type", "ref", "owner", "slug" ], "type": "object" } ] }, "meta": { "additionalProperties": { "maxLength": 65536, "type": "string" }, "description": "An object containing the deployment's metadata. Multiple key-value pairs can be attached to a deployment", "example": { "foo": "bar" }, "maxProperties": 100, "type": "object" }, "monorepoManager": { "description": "The monorepo manager that is being used for this deployment. When `null` is used no monorepo manager is selected", "type": "string", "nullable": true }, "name": { "description": "A string with the project name used in the deployment URL", "example": "my-instant-deployment", "type": "string" }, "project": { "description": "The target project identifier in which the deployment will be created. When defined, this parameter overrides name", "example": "my-deployment-project", "type": "string" }, "projectSettings": { "additionalProperties": false, "description": "Project settings that will be applied to the deployment. It is required for the first deployment of a project and will be saved for any following deployments", "properties": { "buildCommand": { "description": "The build command for this project. When `null` is used this value will be automatically detected", "maxLength": 256, "type": "string", "nullable": true, "example": "next build" }, "commandForIgnoringBuildStep": { "maxLength": 256, "type": "string", "nullable": true }, "devCommand": { "description": "The dev command for this project. When `null` is used this value will be automatically detected", "maxLength": 256, "type": "string", "nullable": true }, "framework": { "description": "The framework that is being used for this project. When `null` is used no framework is selected", "type": "string", "enum": [ null, "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", "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 } } }, "/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": { "aliasAssignedAt": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "alwaysRefuseToBuild": { "type": "boolean", "enum": [ false, true ] }, "build": { "properties": { "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "env" ], "type": "object" }, "buildArtifactUrls": { "items": { "type": "string" }, "type": "array" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "additionalProperties": true, "type": "object" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "resourceConfig": { "properties": { "buildMachine": { "properties": { "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." }, "defaultPurchaseType": { "type": "string", "enum": [ "enhanced", "standard" ], "description": "The default plan type for the build machine — what the customer is *paying* for on their plan. For most customers, this is standard, but some customers have an entitlement for enhanced builds." }, "machineSelectionType": { "type": "string", "enum": [ "elastic", "fixed" ], "description": "Whether the build ran on a fixed or elastic machine. Used to drive billing for the build." }, "cores": { "type": "number", "description": "Number of cores the build machine ran with. Set at dispatch time once the build lands on a hive." }, "memory": { "type": "number", "description": "Memory, in MiB, the build machine ran with. Set at dispatch time once the build lands on a hive." } }, "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" }, "inspectorUrl": { "nullable": true, "type": "string" }, "isInConcurrentBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "isInSystemBuildsQueue": { "type": "boolean", "enum": [ false, true ] }, "projectSettings": { "properties": { "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "buildCommand": { "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", "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 ] }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" } }, "type": "object" }, "integrations": { "properties": { "status": { "type": "string", "enum": [ "error", "pending", "ready", "skipped", "timeout" ] }, "startedAt": { "type": "number" }, "claimedAt": { "type": "number" }, "completedAt": { "type": "number" }, "skippedAt": { "type": "number" }, "skippedBy": { "type": "string" } }, "required": [ "startedAt", "status" ], "type": "object" }, "images": { "properties": { "sizes": { "items": { "type": "number" }, "type": "array" }, "qualities": { "items": { "type": "number" }, "type": "array" }, "domains": { "items": { "type": "string" }, "type": "array" }, "remotePatterns": { "items": { "properties": { "protocol": { "type": "string", "enum": [ "http", "https" ], "description": "Must be `http` or `https`." }, "hostname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single subdomain. Double `**` matches any number of subdomains." }, "port": { "type": "string", "description": "Can be literal port such as `8080` or empty string meaning no port." }, "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "required": [ "hostname" ], "type": "object" }, "type": "array" }, "localPatterns": { "items": { "properties": { "pathname": { "type": "string", "description": "Can be literal or wildcard. Single `*` matches a single path segment. Double `**` matches any number of path segments." }, "search": { "type": "string", "description": "Can be literal query string such as `?v=1` or empty string meaning no query string." } }, "type": "object" }, "type": "array" }, "minimumCacheTTL": { "type": "number" }, "formats": { "items": { "type": "string", "enum": [ "image/avif", "image/webp" ] }, "type": "array" }, "dangerouslyAllowSVG": { "type": "boolean", "enum": [ false, true ] }, "contentSecurityPolicy": { "type": "string" }, "contentDispositionType": { "type": "string", "enum": [ "attachment", "inline" ] } }, "type": "object" }, "alias": { "items": { "type": "string" }, "type": "array", "description": "A list of all the aliases (default aliases, staging aliases and production aliases) that were assigned upon deployment creation", "example": [] }, "aliasAssigned": { "type": "boolean", "enum": [ false, true ], "description": "A boolean that will be true when the aliases from the alias property were assigned successfully", "example": true }, "bootedAt": { "type": "number" }, "buildingAt": { "type": "number" }, "buildContainerFinishedAt": { "type": "number", "description": "Since April 2025 it necessary for On-Demand Concurrency Minutes calculation" }, "buildSkipped": { "type": "boolean", "enum": [ false, true ] }, "creator": { "properties": { "uid": { "type": "string", "description": "The ID of the user that created the deployment", "example": "96SnxkFiMyVKsK3pnoHfx3Hz" }, "username": { "type": "string", "description": "The username of the user that created the deployment", "example": "john-doe" }, "avatar": { "type": "string", "description": "The avatar of the user that created the deployment" } }, "required": [ "uid" ], "type": "object", "description": "Information about the deployment creator" }, "initReadyAt": { "type": "number" }, "isFirstBranchDeployment": { "type": "boolean", "enum": [ false, true ] }, "lambdas": { "items": { "properties": { "id": { "type": "string" }, "readyState": { "type": "string", "enum": [ "BUILDING", "ERROR", "INITIALIZING", "READY" ] }, "createdAt": { "type": "number" }, "entrypoint": { "nullable": true, "type": "string" }, "readyStateAt": { "type": "number" }, "output": { "items": { "properties": { "path": { "type": "string" }, "functionName": { "type": "string" } }, "required": [ "functionName", "path" ], "type": "object" }, "type": "array" } }, "required": [ "id", "output" ], "type": "object", "description": "A partial representation of a Build used by the deployment endpoint." }, "type": "array" }, "public": { "type": "boolean", "enum": [ false, true ], "description": "A boolean representing if the deployment is public or not. By default this is `false`", "example": false }, "ready": { "type": "number" }, "status": { "type": "string", "enum": [ "BLOCKED", "BUILDING", "CANCELED", "ERROR", "INITIALIZING", "QUEUED", "READY" ] }, "team": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "avatar": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object", "description": "The team that owns the deployment if any" }, "userAliases": { "items": { "type": "string" }, "type": "array", "description": "An array of domains that were provided by the user when creating the Deployment.", "example": [ "sub1.example.com", "sub2.example.com" ] }, "previewCommentsEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not preview comments are enabled for the deployment", "example": false }, "ttyBuildLogs": { "type": "boolean", "enum": [ false, true ] }, "customEnvironment": { "oneOf": [ { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." }, "verification": { "items": { "properties": { "type": { "type": "string" }, "domain": { "type": "string" }, "value": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "domain", "reason", "type", "value" ], "type": "object", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." }, "type": "array", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." } }, "required": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." }, { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object", "description": "If the deployment was created using a Custom Environment, then this property contains information regarding the environment used." } ] }, "oomReport": { "type": "string", "enum": [ "out-of-memory" ] }, "readyStateReason": { "type": "string" }, "id": { "type": "string", "description": "A string holding the unique ID of the deployment", "example": "dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ" }, "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 }, "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" }, "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": { "code": { "type": "string" }, "message": { "type": "string" }, "link": { "type": "string" }, "action": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "errorCode": { "type": "string" }, "errorMessage": { "nullable": true, "type": "string" }, "createdAt": { "type": "number", "description": "A number containing the date when the deployment was created in milliseconds", "example": 1540257589405 }, "name": { "type": "string", "description": "The name of the project associated with the deployment at the time that the deployment was created", "example": "my-project" }, "type": { "type": "string", "enum": [ "LAMBDAS" ] }, "aliasFinal": { "nullable": true, "type": "string" }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ], "description": "applies to custom domains only, defaults to `true`" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "buildErrorAt": { "type": "number" }, "checksState": { "type": "string", "enum": [ "completed", "registered", "running" ] }, "checksConclusion": { "type": "string", "enum": [ "canceled", "failed", "skipped", "succeeded" ] }, "deletedAt": { "nullable": true, "type": "number", "description": "A number containing the date when the deployment was deleted at milliseconds", "example": 1540257589405 }, "defaultRoute": { "type": "string", "description": "Computed field that is only available for deployments with a microfrontend configuration." }, "canceledAt": { "type": "number" }, "errorLink": { "type": "string" }, "errorStep": { "type": "string" }, "passiveRegions": { "items": { "type": "string" }, "type": "array", "description": "Since November 2023 this field defines a set of regions that we will deploy the lambda to passively Lambdas will be deployed to these regions but only invoked if all of the primary `regions` are marked as out of service" }, "gitSource": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "host", "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repoId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "org", "repo", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "projectId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" }, "repoUuid": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoUuid", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "owner": { "type": "string" }, "slug": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "owner", "slug", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "org": { "type": "string" }, "repo": { "type": "string" }, "sha": { "type": "string" }, "repoPushedAt": { "type": "number" }, "ref": { "nullable": true, "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cursor-origin" ] }, "repoId": { "type": "string", "description": "Origin repository id." }, "owner": { "type": "string", "description": "Owner (namespace) slug." }, "repo": { "type": "string" }, "ref": { "nullable": true, "type": "string" }, "sha": { "type": "string" }, "prId": { "nullable": true, "type": "number" } }, "required": [ "repoId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "gitUrl": { "type": "string" } }, "required": [ "gitUrl", "ref", "sha", "type" ], "type": "object", "description": "Allows custom git sources (local folder mounted to the container) in test mode" }, { "properties": { "type": { "type": "string", "enum": [ "github" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "host", "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "number" }, "org": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "ref", "repoId", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "gitlab" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "projectId": { "type": "number" } }, "required": [ "projectId", "ref", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "bitbucket" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "owner": { "type": "string" }, "slug": { "type": "string" }, "workspaceUuid": { "type": "string" }, "repoUuid": { "type": "string" } }, "required": [ "ref", "repoUuid", "sha", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "vercel" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "org": { "type": "string" }, "repo": { "type": "string" }, "repoPushedAt": { "type": "number" } }, "required": [ "org", "ref", "repo", "sha", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cursor-origin" ] }, "ref": { "type": "string" }, "sha": { "type": "string" }, "repoId": { "type": "string" }, "owner": { "type": "string" }, "repo": { "type": "string" } }, "required": [ "owner", "ref", "repo", "repoId", "sha", "type" ], "type": "object" } ] }, "manualProvisioning": { "properties": { "state": { "type": "string", "enum": [ "COMPLETE", "PENDING", "TIMEOUT" ], "description": "Current provisioning state" }, "completedAt": { "type": "number", "description": "Timestamp when manual provisioning completed" } }, "required": [ "state" ], "type": "object", "description": "Present when deployment was created with manual provisioning enabled, either explicitly or via the experimental BYOC git flow. The deployment stays in INITIALIZING until /continue is called." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "originCacheRegion": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "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." }, "project": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string" } }, "required": [ "id", "name" ], "type": "object", "description": "The public project information associated with the deployment." }, "prebuilt": { "type": "boolean", "enum": [ false, true ] }, "readySubstate": { "type": "string", "enum": [ "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" }, "undeletedAt": { "type": "number", "description": "A number containing the date when the deployment was undeleted at milliseconds", "example": 1540257589405 }, "url": { "type": "string", "description": "A string with the unique URL of the deployment", "example": "my-instant-deployment-3ij3cxz9qr.now.sh" }, "userConfiguredDeploymentId": { "type": "string", "description": "Since January 2025 User-configured deployment ID for skew protection with pre-built deployments. This is set when users configure a custom deploymentId in their next.config.js file. This allows Next.js to use skew protection even when deployments are pre-built outside of Vercel's build system.", "example": "abc123" }, "version": { "type": "number", "enum": [ 2 ], "description": "The platform version that was used to create the deployment.", "example": 2 }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "type": "string" } }, "required": [ "aud", "environment", "iss", "owner", "owner_id", "project", "project_id", "scope", "sub" ], "type": "object" }, "projectId": { "type": "string" }, "plan": { "type": "string", "enum": [ "enterprise", "hobby", "pro" ] }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "connectConfigurationId": { "type": "string" }, "createdIn": { "type": "string" }, "crons": { "items": { "properties": { "schedule": { "type": "string" }, "path": { "type": "string" } }, "required": [ "path", "schedule" ], "type": "object" }, "type": "array" }, "functions": { "nullable": true, "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "passiveConnectConfigurationId": { "type": "string", "description": "Since November 2023 this field defines a Secure Compute network that will only be used to deploy passive lambdas to (as in passiveRegions)" }, "routes": { "nullable": true, "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, 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`)." }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "middlewarePath": { "type": "string", "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." }, "middlewareRawSrc": { "items": { "type": "string" }, "type": "array", "description": "The original middleware matchers." }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object" }, { "properties": { "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "dest": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" }, { "properties": { "src": { "type": "string" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "middleware": { "type": "number", "enum": [ 0 ] } }, "required": [ "continue", "middleware", "src" ], "type": "object" } ] }, "type": "array" }, "services": { "items": { "oneOf": [ { "properties": { "schema": { "type": "string", "enum": [ "experimentalServices" ] }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "cron", "job", "web", "worker" ] }, "trigger": { "type": "string", "enum": [ "queue", "schedule", "workflow" ] }, "group": { "type": "string" }, "workspace": { "type": "string" }, "entrypoint": { "type": "string" }, "framework": { "type": "string" }, "builder": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "properties": { "bunVersion": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "ldsflags": { "type": "string" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "rust": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "functions": { "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "projectSettings": { "properties": { "framework": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" } }, "type": "object" }, "outputDirectory": { "type": "string" }, "installCommand": { "type": "string" }, "buildCommand": { "type": "string" }, "devCommand": { "type": "string" }, "framework": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." } }, "type": "object" } }, "required": [ "use" ], "type": "object" }, "runtime": { "type": "string" }, "buildCommand": { "type": "string" }, "installCommand": { "type": "string" }, "preDeployCommand": { "type": "string" }, "routePrefix": { "type": "string" }, "routePrefixSource": { "type": "string", "enum": [ "configured", "generated" ] }, "subdomain": { "type": "string" }, "schedule": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "handlerFunction": { "type": "string" }, "topics": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "items": { "properties": { "topic": { "type": "string" }, "retryAfterSeconds": { "type": "number" }, "initialDelaySeconds": { "type": "number" } }, "required": [ "topic" ], "type": "object" }, "type": "array" } ] }, "env": { "additionalProperties": { "properties": { "type": { "type": "string", "enum": [ "service-ref" ] }, "service": { "type": "string" } }, "required": [ "service", "type" ], "type": "object" }, "type": "object" } }, "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": { "schema": { "type": "string", "enum": [ "experimentalServicesV2" ] }, "name": { "type": "string" }, "root": { "type": "string", "description": "Path to the service root, relative to the project root." }, "framework": { "type": "string" }, "runtime": { "type": "string" }, "entrypoint": { "type": "string", "description": "Resolved entrypoint, relative to the service root." }, "command": { "items": { "type": "string" }, "type": "array", "description": "Command override for `runtime: \"container\"` services." }, "builder": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "config": { "properties": { "bunVersion": { "type": "string" }, "maxLambdaSize": { "type": "string" }, "includeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "excludeFiles": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "bundle": { "type": "boolean", "enum": [ false, true ] }, "ldsflags": { "type": "string" }, "helpers": { "type": "boolean", "enum": [ false, true ] }, "rust": { "type": "string" }, "debug": { "type": "boolean", "enum": [ false, true ] }, "zeroConfig": { "type": "boolean", "enum": [ false, true ] }, "import": { "additionalProperties": { "type": "string" }, "type": "object" }, "functions": { "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "type": "object" }, "projectSettings": { "properties": { "framework": { "nullable": true, "type": "string" }, "devCommand": { "nullable": true, "type": "string" }, "installCommand": { "nullable": true, "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "outputDirectory": { "nullable": true, "type": "string" }, "rootDirectory": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "monorepoManager": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" } }, "type": "object" }, "outputDirectory": { "type": "string" }, "installCommand": { "type": "string" }, "buildCommand": { "type": "string" }, "devCommand": { "type": "string" }, "framework": { "nullable": true, "type": "string" }, "nodeVersion": { "type": "string" }, "middleware": { "type": "boolean", "enum": [ false, true ] }, "middlewareRuntime": { "type": "string", "enum": [ "nodejs" ], "description": "Enforced runtime for explicitly configured Routing Middleware." }, "middlewareMatcher": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array", "description": "Matcher supplied outside of the middleware source module." } ] }, "serviceName": { "type": "string", "description": "Owning service name; scopes per-function config such as the v2beta consumer." } }, "type": "object" } }, "required": [ "use" ], "type": "object", "description": "Builder selected by the resolver." }, "installCommand": { "type": "string" }, "buildCommand": { "type": "string" }, "devCommand": { "type": "string" }, "ignoreCommand": { "type": "string" }, "outputDirectory": { "type": "string" }, "bindings": { "items": { "properties": { "type": { "type": "string", "enum": [ "service" ], "description": "If present, must be `\"service\"` for Service-to-Service HTTP bindings." }, "service": { "type": "string", "description": "Target service name from `services`." }, "format": { "type": "string", "enum": [ "url" ], "description": "Generated value shape, must be `\"url\"`." }, "env": { "type": "string", "description": "Environment variable name that will store the generated value" } }, "required": [ "env", "format", "service" ], "type": "object", "description": "Caller-side bindings to other services." }, "type": "array", "description": "Caller-side bindings to other services." }, "functions": { "additionalProperties": { "properties": { "architecture": { "type": "string", "enum": [ "arm64", "x86_64" ] }, "memory": { "type": "number" }, "maxDuration": { "oneOf": [ { "type": "number" }, { "type": "string", "enum": [ "max" ] } ] }, "regions": { "items": { "type": "string" }, "type": "array" }, "functionFailoverRegions": { "items": { "type": "string" }, "type": "array" }, "runtime": { "type": "string" }, "includeFiles": { "type": "string" }, "excludeFiles": { "type": "string" }, "experimentalTriggers": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "queue/v1beta" ], "description": "Event type - must be \"queue/v1beta\" (REQUIRED)" }, "consumer": { "type": "string", "description": "Name of the consumer group for this trigger (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "consumer", "topic", "type" ], "type": "object", "description": "Queue trigger input event for v1beta (from vercel.json config). Requires explicit consumer name." }, { "properties": { "type": { "type": "string", "enum": [ "queue/v2beta" ], "description": "Event type - must be \"queue/v2beta\" (REQUIRED)" }, "topic": { "type": "string", "description": "Name of the queue topic to consume from (REQUIRED)" }, "maxDeliveries": { "type": "number", "description": "Maximum number of delivery attempts for message processing (OPTIONAL) This represents the total number of times a message can be delivered, not the number of retries. Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." }, "retryAfterSeconds": { "type": "number", "description": "Delay in seconds before retrying failed executions (OPTIONAL) Behavior when not specified depends on the server's default configuration." }, "initialDelaySeconds": { "type": "number", "description": "Initial delay in seconds before first execution attempt (OPTIONAL) Must be 0 or greater. Use 0 for no initial delay. Behavior when not specified depends on the server's default configuration." }, "maxConcurrency": { "type": "number", "description": "Maximum number of concurrent executions for this consumer (OPTIONAL) Must be at least 1 if specified. Behavior when not specified depends on the server's default configuration." } }, "required": [ "topic", "type" ], "type": "object", "description": "Queue trigger input event for v2beta (from vercel.json config). Consumer name is implicitly derived from the function path. Only one trigger per function is allowed." } ] }, "type": "array" }, "supportsCancellation": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "description": "Function configuration scoped to this service." }, "type": "object", "description": "Function configuration scoped to this service." }, "headers": { "items": { "properties": { "source": { "type": "string" }, "headers": { "items": { "properties": { "key": { "type": "string" }, "value": { "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "headers", "source" ], "type": "object" }, "type": "array" }, "redirects": { "items": { "properties": { "source": { "type": "string" }, "destination": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "statusCode": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "rewrites": { "items": { "properties": { "source": { "type": "string" }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" }, "type": "array" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "statusCode": { "type": "number" }, "env": { "items": { "type": "string" }, "type": "array" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "destination", "source" ], "type": "object" }, "type": "array" }, "routes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, 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`)." }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "middlewarePath": { "type": "string", "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." }, "middlewareRawSrc": { "items": { "type": "string" }, "type": "array", "description": "The original middleware matchers." }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object" }, { "properties": { "handle": { "type": "string", "enum": [ "error", "filesystem", "hit", "miss", "resource", "rewrite" ] }, "src": { "type": "string" }, "dest": { "type": "string" }, "status": { "type": "number" } }, "required": [ "handle" ], "type": "object" } ] }, "type": "array" }, "cleanUrls": { "type": "boolean", "enum": [ false, true ] }, "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." }, "gitRepo": { "nullable": true, "oneOf": [ { "properties": { "namespace": { "type": "string" }, "projectId": { "type": "number" }, "type": { "type": "string", "enum": [ "gitlab" ] }, "url": { "type": "string" }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "namespace", "ownerType", "path", "private", "projectId", "type", "url" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github" ] }, "repoOwnerId": { "type": "number" }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "repoId", "repoOwnerId", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string" }, "repoUuid": { "type": "string" }, "slug": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "workspaceUuid": { "type": "string" }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repoUuid", "slug", "type", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "org", "ownerType", "path", "private", "repo", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug." }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "path": { "type": "string" }, "defaultBranch": { "type": "string" }, "name": { "type": "string" }, "private": { "type": "boolean", "enum": [ false, true ] }, "ownerType": { "type": "string", "enum": [ "team", "user" ] } }, "required": [ "defaultBranch", "name", "owner", "ownerType", "path", "private", "repo", "repoId", "type" ], "type": "object" } ] }, "flags": { "oneOf": [ { "properties": { "definitions": { "additionalProperties": { "properties": { "options": { "items": { "properties": { "value": { "$ref": "#/components/schemas/FlagJSONValue" }, "label": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "url": { "type": "string" }, "description": { "type": "string" } }, "type": "object" }, "type": "object" } }, "required": [ "definitions" ], "type": "object", "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." }, { "items": { "type": "object", "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." }, "type": "array", "description": "Flags defined in the Build Output API, used by this deployment. Primarily used by the Toolbar to know about the used flags." } ] }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "mfeConfigUploadState": { "type": "string", "enum": [ "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." }, "defaultAppProjectName": { "type": "string", "description": "The project name of the default app of this deployment's microfrontends group." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." } }, "required": [ "defaultAppProjectName", "groupIds", "isDefaultApp" ], "type": "object" } ] }, "platform": { "properties": { "source": { "properties": { "name": { "type": "string", "description": "Display name of the platform." } }, "required": [ "name" ], "type": "object", "description": "The external platform that created the deployment (e.g. its display name)." }, "origin": { "properties": { "type": { "type": "string", "enum": [ "id", "url" ], "description": "Whether the value is an opaque identifier or a URL." }, "value": { "type": "string", "description": "The identifier or URL pointing to the originating entity." } }, "required": [ "type", "value" ], "type": "object", "description": "Reference back to the entity on the platform that initiated the deployment." }, "creator": { "properties": { "name": { "type": "string", "description": "Display name of the platform user." }, "avatar": { "type": "string", "description": "URL of the platform user's avatar image." } }, "required": [ "name" ], "type": "object", "description": "The user on the external platform who triggered the deployment." }, "meta": { "additionalProperties": { "type": "string" }, "type": "object", "description": "Arbitrary key-value metadata provided by the platform." } }, "required": [ "creator", "origin", "source" ], "type": "object", "description": "Metadata about the source platform that triggered the deployment. Allows us to map a deployment back to a platform (e.g. the chat that created it)" }, "config": { "properties": { "version": { "type": "number" }, "functionType": { "type": "string", "enum": [ "fluid", "standard" ] }, "functionMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionTimeout": { "nullable": true, "type": "number" }, "secureComputePrimaryRegion": { "nullable": true, "type": "string" }, "secureComputeFallbackRegion": { "nullable": true, "type": "string" }, "isUsingActiveCPU": { "type": "boolean", "enum": [ false, true ] }, "resourceConfig": { "properties": { "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ], "description": "Build resource configuration snapshot for this deployment." } }, "type": "object", "description": "Build resource configuration snapshot for this deployment." }, "elasticConcurrency": { "type": "string", "enum": [ "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." } }, "required": [ "functionMemoryType", "functionTimeout", "functionType", "secureComputeFallbackRegion", "secureComputePrimaryRegion" ], "type": "object", "description": "Since February 2025 the configuration must include snapshot data at the time of deployment creation to capture properties for the /deployments/:id/config endpoint utilized for displaying Deployment Configuration on the frontend This is optional because older deployments may not have this data captured" }, "checks": { "properties": { "deployment-alias": { "properties": { "state": { "type": "string", "enum": [ "failed", "pending", "succeeded" ] }, "startedAt": { "type": "number" }, "completedAt": { "type": "number" } }, "required": [ "startedAt", "state" ], "type": "object", "description": "Condensed check data. Retrieve individual check and check run data using api-checks v2 routes." } }, "required": [ "deployment-alias" ], "type": "object" }, "seatBlock": { "properties": { "blockCode": { "type": "string", "enum": [ "COMMIT_AUTHOR_REQUIRED", "TEAM_ACCESS_REQUIRED" ], "description": "The NSNB decision code for the seat block. TODO: We should consolidate block types." }, "userId": { "type": "string", "description": "The blocked vercel user ID." }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Determines if the user was verified during the block. In the git integration case, the commit sender was the author." }, "gitUserId": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "gitProvider": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ], "description": "The git provider type associated with gitUserId." } }, "required": [ "blockCode" ], "type": "object", "description": "NSNB Blocked metadata" }, "attribution": { "properties": { "commitMeta": { "properties": { "email": { "type": "string", "description": "Email from git commit author" }, "name": { "type": "string", "description": "Name from git commit author" }, "isVerified": { "type": "boolean", "enum": [ false, true ], "description": "Whether the commit was signed/verified (GitHub only, others return undefined)" } }, "type": "object", "description": "Commit metadata from the git commit author" }, "gitUser": { "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "login": { "type": "string", "description": "Git provider username/login" }, "type": { "type": "string", "description": "User type" }, "provider": { "type": "string", "description": "The git provider (github, gitlab, bitbucket)" } }, "required": [ "id", "login" ], "type": "object", "description": "Git provider user associated with the commit author email (only set if resolved)" }, "vercelUser": { "properties": { "id": { "type": "string", "description": "Vercel user ID" }, "username": { "type": "string", "description": "Vercel username" }, "teamRoles": { "items": { "type": "string" }, "type": "array", "description": "Team roles at time of deployment" } }, "required": [ "id", "username" ], "type": "object", "description": "Vercel user linked to the git provider account (only set if resolved)" } }, "type": "object", "description": "Attribution metadata for the deployment, linking commit author to git and Vercel users. Only populated when the `enable-deployment-attribution` flag is enabled." } }, "required": [ "aliasAssigned", "bootedAt", "build", "buildSkipped", "buildingAt", "createdAt", "createdIn", "creator", "env", "id", "inspectorUrl", "isInConcurrentBuildsQueue", "isInSystemBuildsQueue", "meta", "name", "ownerId", "plan", "projectId", "projectSettings", "public", "readyState", "regions", "routes", "status", "type", "url", "version" ], "type": "object", "description": "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" } } ] } }, "/v5/domains/{domain}/records": { "get": { "description": "Retrieves a list of DNS records created for a domain name. By default it returns 20 records if no limit is provided. The rest can be retrieved using the pagination options.", "operationId": "getRecords", "security": [ { "bearerToken": [] } ], "summary": "List existing DNS records", "tags": [ "dns" ], "responses": { "200": { "description": "Successful response retrieving a list of paginated DNS records.", "content": { "application/json": { "schema": { "oneOf": [ { "type": "string" }, { "properties": { "records": { "items": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "NS", "SRV", "TXT" ] }, "value": { "type": "string" }, "mxPriority": { "type": "number" }, "priority": { "type": "number" }, "creator": { "type": "string" }, "created": { "nullable": true, "type": "number" }, "updated": { "nullable": true, "type": "number" }, "createdAt": { "nullable": true, "type": "number" }, "updatedAt": { "nullable": true, "type": "number" }, "ttl": { "type": "number" }, "comment": { "type": "string" } }, "required": [ "created", "createdAt", "creator", "id", "name", "slug", "type", "updated", "updatedAt", "value" ], "type": "object" }, "type": "array" } }, "required": [ "records" ], "type": "object" }, { "properties": { "records": { "items": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "NS", "SRV", "TXT" ] }, "value": { "type": "string" }, "mxPriority": { "type": "number" }, "priority": { "type": "number" }, "creator": { "type": "string" }, "created": { "nullable": true, "type": "number" }, "updated": { "nullable": true, "type": "number" }, "createdAt": { "nullable": true, "type": "number" }, "updatedAt": { "nullable": true, "type": "number" }, "ttl": { "type": "number" }, "comment": { "type": "string" } }, "required": [ "created", "createdAt", "creator", "id", "name", "slug", "type", "updated", "updatedAt", "value" ], "type": "object" }, "type": "array" }, "pagination": { "$ref": "#/components/schemas/Pagination" } }, "required": [ "pagination", "records" ], "type": "object", "description": "Successful response retrieving a list of paginated DNS records." } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] } }, "/v2/domains/{domain}/records": { "post": { "description": "Creates a DNS record for a domain.", "operationId": "createRecord", "security": [ { "bearerToken": [] } ], "summary": "Create a DNS record", "tags": [ "dns" ], "responses": { "200": { "description": "Successful response showing the uid of the newly created DNS record.", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "uid": { "type": "string" }, "updated": { "type": "number" } }, "required": [ "uid", "updated" ], "type": "object" }, { "properties": { "uid": { "type": "string", "description": "The id of the newly created DNS record", "example": "rec_V0fra8eEgQwEpFhYG2vTzC3K" } }, "required": [ "uid" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "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": 2147483647, "example": 60 }, "value": { "description": "The record value must be a valid IPv4 address.", "type": "string", "format": "ipv4", "example": "192.0.2.42" }, "comment": { "type": "string", "description": "A comment to add context on what this DNS record is for", "example": "used to verify ownership of domain", "maxLength": 500 } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "value", "name" ], "properties": { "name": { "description": "A subdomain name or an empty string for the root domain.", "type": "string", "example": "subdomain" }, "type": { "description": "Must be of type `AAAA`.", "type": "string", "enum": [ "AAAA" ] }, "ttl": { "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", "type": "number", "minimum": 60, "maximum": 2147483647, "example": 60 }, "value": { "description": "An AAAA record pointing to an IPv6 address.", "type": "string", "format": "ipv6", "example": "2001:DB8::42" }, "comment": { "type": "string", "description": "A comment to add context on what this DNS record is for", "example": "used to verify ownership of domain", "maxLength": 500 } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "value", "name" ], "properties": { "name": { "description": "A subdomain name or an empty string for the root domain.", "type": "string", "example": "subdomain" }, "type": { "description": "Must be of type `ALIAS`.", "type": "string", "enum": [ "ALIAS" ] }, "ttl": { "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", "type": "number", "minimum": 60, "maximum": 2147483647, "example": 60 }, "value": { "description": "An ALIAS virtual record pointing to a hostname resolved to an A record on server side.", "type": "string", "example": "cname.vercel-dns.com" }, "comment": { "type": "string", "description": "A comment to add context on what this DNS record is for", "example": "used to verify ownership of domain", "maxLength": 500 } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "value", "name" ], "properties": { "name": { "description": "A subdomain name or an empty string for the root domain.", "type": "string", "example": "subdomain" }, "type": { "description": "Must be of type `CAA`.", "type": "string", "enum": [ "CAA" ] }, "ttl": { "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", "type": "number", "minimum": 60, "maximum": 2147483647, "example": 60 }, "value": { "description": "A CAA record to specify which Certificate Authorities (CAs) are allowed to issue certificates for the domain.", "type": "string", "example": "0 issue \"letsencrypt.org\"" }, "comment": { "type": "string", "description": "A comment to add context on what this DNS record is for", "example": "used to verify ownership of domain", "maxLength": 500 } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "name" ], "properties": { "name": { "description": "A subdomain name or an empty string for the root domain.", "type": "string", "example": "subdomain" }, "type": { "description": "Must be of type `CNAME`.", "type": "string", "enum": [ "CNAME" ] }, "ttl": { "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", "type": "number", "minimum": 60, "maximum": 2147483647, "example": 60 }, "value": { "description": "A CNAME record mapping to another domain name.", "type": "string", "example": "cname.vercel-dns.com" }, "comment": { "type": "string", "description": "A comment to add context on what this DNS record is for", "example": "used to verify ownership of domain", "maxLength": 500 } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "value", "name", "mxPriority" ], "properties": { "name": { "description": "A subdomain name or an empty string for the root domain.", "type": "string", "example": "subdomain" }, "type": { "description": "Must be of type `MX`.", "type": "string", "enum": [ "MX" ] }, "ttl": { "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", "type": "number", "minimum": 60, "maximum": 2147483647, "example": 60 }, "value": { "description": "An MX record specifying the mail server responsible for accepting messages on behalf of the domain name.", "type": "string", "example": "10 mail.example.com." }, "mxPriority": { "type": "number", "minimum": 0, "maximum": 65535, "example": 10 }, "comment": { "type": "string", "description": "A comment to add context on what this DNS record is for", "example": "used to verify ownership of domain", "maxLength": 500 } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "name", "srv" ], "properties": { "type": { "description": "Must be of type `SRV`.", "type": "string", "enum": [ "SRV" ] }, "ttl": { "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", "type": "number", "minimum": 60, "maximum": 2147483647, "example": 60 }, "srv": { "type": "object", "additionalProperties": false, "required": [ "weight", "port", "priority", "target" ], "properties": { "priority": { "anyOf": [ { "type": "number", "minimum": 0, "maximum": 65535, "example": 10 } ], "nullable": true }, "weight": { "anyOf": [ { "type": "number", "minimum": 0, "maximum": 65535, "example": 10 } ], "nullable": true }, "port": { "anyOf": [ { "type": "number", "minimum": 0, "maximum": 65535, "example": 5000 } ], "nullable": true }, "target": { "type": "string", "example": "host.example.com" } } }, "comment": { "type": "string", "description": "A comment to add context on what this DNS record is for", "example": "used to verify ownership of domain", "maxLength": 500 } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "value", "name" ], "properties": { "type": { "description": "Must be of type `TXT`.", "type": "string", "enum": [ "TXT" ] }, "ttl": { "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", "type": "number", "minimum": 60, "maximum": 2147483647, "example": 60 }, "value": { "description": "A TXT record containing arbitrary text.", "type": "string", "example": "hello" }, "comment": { "type": "string", "description": "A comment to add context on what this DNS record is for", "example": "used to verify ownership of domain", "maxLength": 500 } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "name" ], "properties": { "name": { "description": "A subdomain name.", "type": "string", "example": "subdomain" }, "type": { "description": "Must be of type `NS`.", "type": "string", "enum": [ "NS" ] }, "ttl": { "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", "type": "number", "minimum": 60, "maximum": 2147483647, "example": 60 }, "value": { "description": "An NS domain value.", "type": "string", "example": "ns1.example.com" }, "comment": { "type": "string", "description": "A comment to add context on what this DNS record is for", "example": "used to verify ownership of domain", "maxLength": 500 } } }, { "type": "object", "additionalProperties": false, "required": [ "type", "name", "https" ], "properties": { "type": { "description": "Must be of type `HTTPS`.", "type": "string", "enum": [ "HTTPS" ] }, "ttl": { "description": "The TTL value. Must be a number between 60 and 2147483647. Default value is 60.", "type": "number", "minimum": 60, "maximum": 2147483647, "example": 60 }, "https": { "type": "object", "additionalProperties": false, "required": [ "priority", "target" ], "properties": { "priority": { "anyOf": [ { "type": "number", "minimum": 0, "maximum": 65535, "example": 10 } ], "nullable": true }, "target": { "type": "string", "example": "host.example.com" }, "params": { "type": "string", "example": "alpn=h2,h3" } } }, "comment": { "type": "string", "description": "A comment to add context on what this DNS record is for", "example": "used to verify ownership of domain", "maxLength": 500 } } } ] } } }, "required": true }, "x-speakeasy-test": false } }, "/v1/domains/records/{recordId}": { "patch": { "description": "Updates an existing DNS record for a domain name.", "operationId": "updateRecord", "security": [ { "bearerToken": [] } ], "summary": "Update an existing DNS record", "tags": [ "dns" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "record", "record-sys" ] }, "value": { "type": "string" }, "creator": { "type": "string" }, "domain": { "type": "string" }, "ttl": { "type": "number" }, "comment": { "type": "string" }, "recordType": { "type": "string", "enum": [ "A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "NS", "SRV", "TXT" ] }, "createdAt": { "nullable": true, "type": "number" } }, "required": [ "creator", "domain", "id", "name", "recordType", "type", "value" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "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": 2147483647, "nullable": true }, "mxPriority": { "type": "integer", "description": "The MX priority value of the DNS record", "nullable": true }, "srv": { "additionalProperties": false, "required": [ "target", "weight", "port", "priority" ], "properties": { "target": { "type": "string", "description": "", "example": "example2.com.", "maxLength": 255, "nullable": true }, "weight": { "description": "", "type": "integer", "nullable": true }, "port": { "description": "", "type": "integer", "nullable": true }, "priority": { "description": "", "type": "integer", "nullable": true } }, "type": "object", "nullable": true }, "https": { "additionalProperties": false, "required": [ "priority", "target" ], "properties": { "priority": { "description": "", "type": "integer", "nullable": true }, "target": { "type": "string", "description": "", "example": "example2.com.", "maxLength": 255, "nullable": true }, "params": { "description": "", "type": "string", "nullable": true } }, "type": "object", "nullable": true }, "comment": { "type": "string", "description": "A comment to add context on what this DNS record is for", "example": "used to verify ownership of domain", "maxLength": 500 } }, "type": "object" } } }, "required": true } } }, "/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" } } ] } }, "/domains/records/{recordId}": { "get": { "description": "", "operationId": "getDomainsRecordsByRecordId", "security": [], "tags": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "type": { "type": "string", "enum": [ "A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "NS", "SRV", "TXT" ] }, "id": { "type": "string" }, "name": { "type": "string" }, "value": { "type": "string" }, "creator": { "type": "string" }, "domain": { "type": "string" }, "ttl": { "type": "number" }, "comment": { "type": "string" }, "recordType": { "type": "string", "enum": [ "A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "NS", "SRV", "TXT" ] }, "createdAt": { "nullable": true, "type": "number" } }, "required": [ "creator", "domain", "id", "name", "recordType", "type", "value" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request 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" } } ] } }, "/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" } } ] } }, "/v1/registrar/tlds/supported": { "get": { "tags": [ "domains-registrar" ], "operationId": "getSupportedTlds", "parameters": [ { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "A list of the TLDs supported by Vercel.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TldName" }, "description": "A list of the TLDs supported by Vercel." } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpApiDecodeError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get a list of TLDs supported by Vercel", "summary": "Get supported TLDs" } }, "/v1/registrar/tlds/{tld}": { "get": { "tags": [ "domains-registrar" ], "operationId": "getTld", "parameters": [ { "name": "tld", "in": "path", "schema": { "$ref": "#/components/schemas/TldName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "supportedLanguageCodes" ], "properties": { "supportedLanguageCodes": { "type": "object", "properties": {}, "additionalProperties": { "type": "string" }, "description": "The language codes that are supported for the TLD. The key is the language code, and the value is the name of the language." } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get the metadata for a specific TLD.", "summary": "Get TLD" } }, "/v1/registrar/tlds/{tld}/price": { "get": { "tags": [ "domains-registrar" ], "operationId": "getTldPrice", "parameters": [ { "name": "tld", "in": "path", "schema": { "$ref": "#/components/schemas/TldName" }, "required": true }, { "name": "years", "in": "query", "schema": { "type": "string", "description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used." }, "required": false, "description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used." }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "years", "purchasePrice", "renewalPrice", "transferPrice" ], "properties": { "years": { "type": "number", "description": "The number of years the returned price is for." }, "purchasePrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] }, "renewalPrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] }, "transferPrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get price data for a specific TLD. This only reflects base prices for the given TLD. Premium domains may have different prices. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to get the price data for a specific domain.", "summary": "Get TLD price data" } }, "/v1/registrar/domains/{domain}/availability": { "get": { "tags": [ "domains-registrar" ], "operationId": "getDomainAvailability", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "available" ], "properties": { "available": { "type": "boolean" } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpApiDecodeError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "404": { "description": "NotFound", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get availability for a specific domain. If the domain is available, it can be purchased using the [Buy a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-a-domain) endpoint or the [Buy multiple domains](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-multiple-domains) endpoint.", "summary": "Get availability for a domain" } }, "/v1/registrar/domains/{domain}/price": { "get": { "tags": [ "domains-registrar" ], "operationId": "getDomainPrice", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "years", "in": "query", "schema": { "type": "string", "description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used." }, "required": false, "description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used." }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "years", "purchasePrice", "renewalPrice", "transferPrice" ], "properties": { "years": { "type": "number" }, "purchasePrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] }, "renewalPrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] }, "transferPrice": { "anyOf": [ { "type": "number", "minimum": 0.01 }, { "type": "string" } ] } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/BadRequest" }, { "$ref": "#/components/schemas/DomainTooShort" }, { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get price data for a specific domain", "summary": "Get price data for a domain" } }, "/v1/registrar/domains/availability": { "post": { "tags": [ "domains-registrar" ], "operationId": "getBulkAvailability", "parameters": [ { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "results" ], "properties": { "results": { "type": "array", "items": { "type": "object", "required": [ "domain", "available" ], "properties": { "domain": { "$ref": "#/components/schemas/DomainName" }, "available": { "type": "boolean" } }, "additionalProperties": false } } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpApiDecodeError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get availability for multiple domains. If the domains are available, they can be purchased using the [Buy a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-a-domain) endpoint or the [Buy multiple domains](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-multiple-domains) endpoint.", "summary": "Get availability for multiple domains", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "domains" ], "properties": { "domains": { "type": "array", "minItems": 1, "items": { "$ref": "#/components/schemas/DomainName" }, "description": "an array of at most 50 item(s)", "title": "maxItems(50)", "maxItems": 50 } }, "additionalProperties": false } } }, "required": true } } }, "/v1/registrar/domains/{domain}/auth-code": { "get": { "tags": [ "domains-registrar" ], "operationId": "getDomainAuthCode", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "authCode" ], "properties": { "authCode": { "type": "string" } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/DomainNotRegistered" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "The domain was not found in our system.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DomainNotFound" } } } }, "409": { "description": "The domain cannot be transfered out until the specified date.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DomainCannotBeTransferedOutUntil" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get the auth code for a domain. This is required to transfer a domain from Vercel to another registrar.", "summary": "Get the auth code for a domain" } }, "/v1/registrar/domains/{domain}/buy": { "post": { "tags": [ "domains-registrar" ], "operationId": "buySingleDomain", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "orderId", "_links" ], "properties": { "orderId": { "$ref": "#/components/schemas/OrderId" }, "_links": { "type": "object", "additionalProperties": { "type": "object", "required": [ "href", "method" ], "properties": { "href": { "type": "string" }, "method": { "type": "string", "enum": [ "GET", "POST", "PUT", "DELETE", "PATCH" ] } }, "additionalProperties": false } } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/DomainTooShort" }, { "$ref": "#/components/schemas/OrderTooExpensive" }, { "$ref": "#/components/schemas/InvalidAdditionalContactInfo" }, { "$ref": "#/components/schemas/AdditionalContactInfoRequired" }, { "$ref": "#/components/schemas/ExpectedPriceMismatch" }, { "$ref": "#/components/schemas/DomainNotAvailable" }, { "$ref": "#/components/schemas/LanguageCodeRequired" }, { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Buy a domain", "summary": "Buy a domain", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "autoRenew", "years", "expectedPrice", "contactInformation" ], "properties": { "autoRenew": { "type": "boolean", "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." }, "years": { "type": "number", "description": "The number of years to purchase the domain for." }, "expectedPrice": { "type": "number", "minimum": 0.01 }, "contactInformation": { "type": "object", "required": [ "firstName", "lastName", "email", "phone", "address1", "city", "state", "zip", "country" ], "properties": { "firstName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "lastName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "email": { "$ref": "#/components/schemas/EmailAddress" }, "phone": { "$ref": "#/components/schemas/E164PhoneNumber" }, "address1": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "address2": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "city": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "state": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "zip": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "country": { "$ref": "#/components/schemas/CountryCode" }, "companyName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "fax": { "$ref": "#/components/schemas/E164PhoneNumber" }, "additional": { "type": "object", "properties": {} } }, "additionalProperties": false, "description": "The contact information for the domain. Some TLDs require additional contact information. Use the [Get contact info schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) endpoint to retrieve the required fields." }, "languageCode": { "type": "string", "description": "The language code for the domain. For punycode domains, this must be provided. The list of supported language codes for a TLD can be retrieved from the [Get TLD](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-tld) endpoint." } }, "additionalProperties": false } } }, "required": true } } }, "/v1/registrar/domains/buy": { "post": { "tags": [ "domains-registrar" ], "operationId": "buyDomains", "parameters": [ { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "orderId", "_links" ], "properties": { "orderId": { "$ref": "#/components/schemas/OrderId" }, "_links": { "type": "object", "additionalProperties": { "type": "object", "required": [ "href", "method" ], "properties": { "href": { "type": "string" }, "method": { "type": "string", "enum": [ "GET", "POST", "PUT", "DELETE", "PATCH" ] } }, "additionalProperties": false } } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/DomainTooShort" }, { "$ref": "#/components/schemas/OrderTooExpensive" }, { "$ref": "#/components/schemas/TooManyDomains" }, { "$ref": "#/components/schemas/InvalidAdditionalContactInfo" }, { "$ref": "#/components/schemas/AdditionalContactInfoRequired" }, { "$ref": "#/components/schemas/DuplicateDomains" }, { "$ref": "#/components/schemas/ExpectedPriceMismatch" }, { "$ref": "#/components/schemas/DomainNotAvailable" }, { "$ref": "#/components/schemas/LanguageCodeRequired" }, { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Buy multiple domains at once", "summary": "Buy multiple domains", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "domains", "contactInformation" ], "properties": { "domains": { "type": "array", "minItems": 1, "items": { "type": "object", "required": [ "domainName", "autoRenew", "years", "expectedPrice" ], "properties": { "domainName": { "$ref": "#/components/schemas/DomainName" }, "autoRenew": { "type": "boolean", "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." }, "years": { "type": "number", "description": "The number of years to purchase the domain for." }, "expectedPrice": { "type": "number", "minimum": 0.01 }, "languageCode": { "type": "string", "description": "The language code for the domain. For punycode domains, this must be provided. The list of supported language codes for a TLD can be retrieved from the [Get TLD](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-tld) endpoint." } }, "additionalProperties": false } }, "contactInformation": { "type": "object", "required": [ "firstName", "lastName", "email", "phone", "address1", "city", "state", "zip", "country" ], "properties": { "firstName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "lastName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "email": { "$ref": "#/components/schemas/EmailAddress" }, "phone": { "$ref": "#/components/schemas/E164PhoneNumber" }, "address1": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "address2": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "city": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "state": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "zip": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "country": { "$ref": "#/components/schemas/CountryCode" }, "companyName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "fax": { "$ref": "#/components/schemas/E164PhoneNumber" }, "additional": { "type": "object", "properties": {} } }, "additionalProperties": false, "description": "The contact information for the domain. Some TLDs require additional contact information. Use the [Get contact info schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) endpoint to retrieve the required fields." } }, "additionalProperties": false } } }, "required": true } } }, "/v1/registrar/domains/{domain}/transfer": { "post": { "tags": [ "domains-registrar" ], "operationId": "transferInDomain", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "orderId", "_links" ], "properties": { "orderId": { "$ref": "#/components/schemas/OrderId" }, "_links": { "type": "object", "additionalProperties": { "type": "object", "required": [ "href", "method" ], "properties": { "href": { "type": "string" }, "method": { "type": "string", "enum": [ "GET", "POST", "PUT", "DELETE", "PATCH" ] } }, "additionalProperties": false } } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/BadRequest" }, { "$ref": "#/components/schemas/DomainAlreadyOwned" }, { "$ref": "#/components/schemas/DomainTooShort" }, { "$ref": "#/components/schemas/DNSSECEnabled" }, { "$ref": "#/components/schemas/ExpectedPriceMismatch" }, { "$ref": "#/components/schemas/DomainNotAvailable" }, { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Transfer a domain in from another registrar", "summary": "Transfer-in a domain", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "authCode", "autoRenew", "years", "expectedPrice", "contactInformation" ], "properties": { "authCode": { "type": "string", "description": "The auth code for the domain. You must obtain this code from the losing registrar." }, "autoRenew": { "type": "boolean", "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." }, "years": { "type": "number", "description": "The number of years to renew the domain for once it is transferred in. This must be a valid number of transfer years for the TLD." }, "expectedPrice": { "type": "number", "minimum": 0.01 }, "contactInformation": { "type": "object", "required": [ "firstName", "lastName", "email", "phone", "address1", "city", "state", "zip", "country" ], "properties": { "firstName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "lastName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "email": { "$ref": "#/components/schemas/EmailAddress" }, "phone": { "$ref": "#/components/schemas/E164PhoneNumber" }, "address1": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "address2": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "city": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "state": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "zip": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "country": { "$ref": "#/components/schemas/CountryCode" }, "companyName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "fax": { "$ref": "#/components/schemas/E164PhoneNumber" } }, "additionalProperties": false } }, "additionalProperties": false } } }, "required": true } }, "get": { "tags": [ "domains-registrar" ], "operationId": "getDomainTransferIn", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string", "enum": [ "canceled", "canceled_pending_refund", "completed", "created", "failed", "pending", "pending_insert", "pending_new_auth_code", "pending_transfer", "pending_unlock", "pending_registry_unlock", "rejected", "submitting_transfer" ] } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpApiDecodeError" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "NotFound", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Get the transfer status for a domain", "summary": "Get a domain's transfer status" } }, "/v1/registrar/domains/{domain}/renew": { "post": { "tags": [ "domains-registrar" ], "operationId": "renewDomain", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "required": [ "orderId", "_links" ], "properties": { "orderId": { "$ref": "#/components/schemas/OrderId" }, "_links": { "type": "object", "additionalProperties": { "type": "object", "required": [ "href", "method" ], "properties": { "href": { "type": "string" }, "method": { "type": "string", "enum": [ "GET", "POST", "PUT", "DELETE", "PATCH" ] } }, "additionalProperties": false } } }, "additionalProperties": false } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/BadRequest" }, { "$ref": "#/components/schemas/DomainTooShort" }, { "$ref": "#/components/schemas/DomainNotRegistered" }, { "$ref": "#/components/schemas/ExpectedPriceMismatch" }, { "$ref": "#/components/schemas/DomainNotAvailable" }, { "$ref": "#/components/schemas/TldNotSupported" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "The domain was not found in our system.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DomainNotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Renew a domain", "summary": "Renew a domain", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "years", "expectedPrice" ], "properties": { "years": { "type": "number", "description": "The number of years to renew the domain for." }, "expectedPrice": { "type": "number", "minimum": 0.01 }, "contactInformation": { "type": "object", "required": [ "firstName", "lastName", "email", "phone", "address1", "city", "state", "zip", "country" ], "properties": { "firstName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "lastName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "email": { "$ref": "#/components/schemas/EmailAddress" }, "phone": { "$ref": "#/components/schemas/E164PhoneNumber" }, "address1": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "address2": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "city": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "state": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "zip": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "country": { "$ref": "#/components/schemas/CountryCode" }, "companyName": { "$ref": "#/components/schemas/NonEmptyTrimmedString" }, "fax": { "$ref": "#/components/schemas/E164PhoneNumber" } }, "additionalProperties": false } }, "additionalProperties": false } } }, "required": true } } }, "/v1/registrar/domains/{domain}/auto-renew": { "patch": { "tags": [ "domains-registrar" ], "operationId": "updateDomainAutoRenew", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "204": { "description": "Success" }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/DomainAlreadyRenewing" }, { "$ref": "#/components/schemas/DomainNotRenewable" }, { "$ref": "#/components/schemas/DomainNotRegistered" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "The domain was not found in our system.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DomainNotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Update the auto-renew setting for a domain", "summary": "Update auto-renew for a domain", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "autoRenew" ], "properties": { "autoRenew": { "type": "boolean" } }, "additionalProperties": false } } }, "required": true } } }, "/v1/registrar/domains/{domain}/nameservers": { "patch": { "tags": [ "domains-registrar" ], "operationId": "updateDomainNameservers", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "204": { "description": "Success" }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/DomainNotRegistered" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "The domain was not found in our system.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DomainNotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Update the nameservers for a domain. Pass an empty array to use Vercel's default nameservers.", "summary": "Update nameservers for a domain", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "nameservers" ], "properties": { "nameservers": { "type": "array", "items": { "$ref": "#/components/schemas/Nameserver" } } }, "additionalProperties": false } } }, "required": true } } }, "/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": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/NotAuthorizedForScope" }, { "$ref": "#/components/schemas/Forbidden" } ] } } } }, "404": { "description": "The domain was not found in our system.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DomainNotFound" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "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" } }, "/v1/registrar/domains/{domain}/contact-info/schema": { "get": { "tags": [ "domains-registrar" ], "operationId": "getContactInfoSchema", "parameters": [ { "name": "domain", "in": "path", "schema": { "$ref": "#/components/schemas/DomainName" }, "required": true }, { "name": "teamId", "in": "query", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" }, "required": false } ], "security": [ { "bearerToken": [] } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "400": { "description": "There was something wrong with the request", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/BadRequest" }, { "$ref": "#/components/schemas/HttpApiDecodeError" } ] } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Unauthorized" } } } }, "403": { "description": "NotAuthorizedForScope", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotAuthorizedForScope" } } } }, "429": { "description": "TooManyRequests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TooManyRequests" } } } }, "500": { "description": "InternalServerError", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalServerError" } } } } }, "description": "Some TLDs require additional contact information. Use this endpoint to get the schema for the tld-specific contact information for a domain.", "summary": "Get contact info schema" } }, "/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" } }, "/v6/domains/{domain}/config": { "get": { "description": "Get a Domain's configuration.", "operationId": "getDomainConfig", "security": [ { "bearerToken": [] } ], "summary": "Get a Domain's configuration", "tags": [ "domains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "configuredBy": { "nullable": true, "type": "string", "enum": [ "A", "CNAME", "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." }, "acceptedChallenges": { "items": { "type": "string", "enum": [ "dns-01", "http-01" ], "description": "Which challenge types the domain can use for issuing certs." }, "type": "array", "description": "Which challenge types the domain can use for issuing certs." }, "recommendedIPv4": { "items": { "properties": { "rank": { "type": "number" }, "value": { "items": { "type": "string" }, "type": "array" } }, "required": [ "rank", "value" ], "type": "object", "description": "Recommended IPv4s for the domain. rank=1 is the preferred value(s) to use. Only using 1 ip value is acceptable." }, "type": "array", "description": "Recommended IPv4s for the domain. rank=1 is the preferred value(s) to use. Only using 1 ip value is acceptable." }, "recommendedCNAME": { "items": { "properties": { "rank": { "type": "number" }, "value": { "type": "string" } }, "required": [ "rank", "value" ], "type": "object", "description": "Recommended CNAMEs for the domain. rank=1 is the preferred value to use." }, "type": "array", "description": "Recommended CNAMEs for the domain. rank=1 is the preferred value to use." }, "misconfigured": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not the domain is configured AND we can automatically generate a TLS certificate." } }, "required": [ "acceptedChallenges", "configuredBy", "misconfigured", "recommendedCNAME", "recommendedIPv4" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] } }, "/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" } } ] } }, "/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": { "expiresAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel." }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "If the domain has the ownership verified.", "example": true }, "nameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the current nameservers of the domain.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "intendedNameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the intended nameservers for the domain to point to Vercel DNS.", "example": [ "ns1.vercel-dns.com", "ns2.vercel-dns.com" ] }, "customNameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of custom nameservers for the domain to point to. Only applies to domains purchased with Vercel.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "creator": { "properties": { "username": { "type": "string" }, "email": { "type": "string" }, "customerId": { "nullable": true, "type": "string" }, "isDomainReseller": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" } }, "required": [ "email", "id", "username" ], "type": "object", "description": "An object containing information of the domain creator, including the user's id, username, and email.", "example": { "id": "ZspSRT4ljIEEmMHgoDwKWDei", "username": "vercel_user", "email": "demo@example.com" } }, "name": { "type": "string", "description": "The domain name.", "example": "example.com" }, "teamId": { "nullable": true, "type": "string" }, "boughtAt": { "nullable": true, "type": "number", "description": "If it was purchased through Vercel, the timestamp in milliseconds when it was purchased.", "example": 1613602938882 }, "createdAt": { "type": "number", "description": "Timestamp in milliseconds when the domain was created in the registry.", "example": 1613602938882 }, "id": { "type": "string", "description": "The unique identifier of the domain.", "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" }, "renew": { "type": "boolean", "enum": [ false, true ], "description": "Indicates whether the domain is set to automatically renew.", "example": true }, "serviceType": { "type": "string", "enum": [ "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" }, "transferredAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain was successfully transferred into Vercel. `null` if the transfer is still processing or was never transferred in.", "example": 1613602938882 }, "transferStartedAt": { "type": "number", "description": "If transferred into Vercel, timestamp in milliseconds when the domain transfer was initiated.", "example": 1613602938882 }, "userId": { "type": "string" } }, "required": [ "boughtAt", "createdAt", "creator", "expiresAt", "id", "intendedNameservers", "name", "nameservers", "serviceType", "teamId", "userId", "verified" ], "type": "object" } }, "required": [ "domain" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request 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" } } ] } }, "/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": { "projectDomains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." }, "verification": { "items": { "properties": { "type": { "type": "string" }, "domain": { "type": "string" }, "value": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "domain", "reason", "type", "value" ], "type": "object", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." }, "type": "array", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." } }, "required": [ "apexName", "name", "projectId", "verified" ], "type": "object" }, "type": "array" }, "pagination": { "$ref": "#/components/schemas/Pagination" } }, "required": [ "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" } } ] } }, "/v5/domains/{domain}": { "get": { "description": "Get information for a single domain in an account or team.", "operationId": "getDomain", "security": [ { "bearerToken": [] } ], "summary": "Get Information for a Single Domain", "tags": [ "domains" ], "responses": { "200": { "description": "Successful response retrieving an information for a specific domains.", "content": { "application/json": { "schema": { "properties": { "domain": { "properties": { "suffix": { "type": "boolean", "enum": [ false, true ] }, "expiresAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel." }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "If the domain has the ownership verified.", "example": true }, "nameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the current nameservers of the domain.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "intendedNameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the intended nameservers for the domain to point to Vercel DNS.", "example": [ "ns1.vercel-dns.com", "ns2.vercel-dns.com" ] }, "customNameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of custom nameservers for the domain to point to. Only applies to domains purchased with Vercel.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "creator": { "properties": { "username": { "type": "string" }, "email": { "type": "string" }, "customerId": { "nullable": true, "type": "string" }, "isDomainReseller": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" } }, "required": [ "email", "id", "username" ], "type": "object", "description": "An object containing information of the domain creator, including the user's id, username, and email.", "example": { "id": "ZspSRT4ljIEEmMHgoDwKWDei", "username": "vercel_user", "email": "demo@example.com" } }, "name": { "type": "string", "description": "The domain name.", "example": "example.com" }, "teamId": { "nullable": true, "type": "string" }, "boughtAt": { "nullable": true, "type": "number", "description": "If it was purchased through Vercel, the timestamp in milliseconds when it was purchased.", "example": 1613602938882 }, "createdAt": { "type": "number", "description": "Timestamp in milliseconds when the domain was created in the registry.", "example": 1613602938882 }, "id": { "type": "string", "description": "The unique identifier of the domain.", "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" }, "renew": { "type": "boolean", "enum": [ false, true ], "description": "Indicates whether the domain is set to automatically renew.", "example": true }, "serviceType": { "type": "string", "enum": [ "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" }, "transferredAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain was successfully transferred into Vercel. `null` if the transfer is still processing or was never transferred in.", "example": 1613602938882 }, "transferStartedAt": { "type": "number", "description": "If transferred into Vercel, timestamp in milliseconds when the domain transfer was initiated.", "example": 1613602938882 }, "userId": { "type": "string" } }, "required": [ "boughtAt", "createdAt", "creator", "expiresAt", "id", "intendedNameservers", "name", "nameservers", "serviceType", "suffix", "teamId", "userId", "verified" ], "type": "object" } }, "required": [ "domain" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] } }, "/v5/domains": { "get": { "description": "Retrieves a list of domains registered for the authenticated user or team. By default it returns the last 20 domains if no limit is provided.", "operationId": "getDomains", "security": [ { "bearerToken": [] } ], "summary": "List all the domains", "tags": [ "domains" ], "responses": { "200": { "description": "Successful response retrieving a list of domains.", "content": { "application/json": { "schema": { "properties": { "domains": { "items": { "properties": { "expiresAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel." }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "If the domain has the ownership verified.", "example": true }, "nameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the current nameservers of the domain.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "intendedNameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the intended nameservers for the domain to point to Vercel DNS.", "example": [ "ns1.vercel-dns.com", "ns2.vercel-dns.com" ] }, "customNameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of custom nameservers for the domain to point to. Only applies to domains purchased with Vercel.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "creator": { "properties": { "username": { "type": "string" }, "email": { "type": "string" }, "customerId": { "nullable": true, "type": "string" }, "isDomainReseller": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" } }, "required": [ "email", "id", "username" ], "type": "object", "description": "An object containing information of the domain creator, including the user's id, username, and email.", "example": { "id": "ZspSRT4ljIEEmMHgoDwKWDei", "username": "vercel_user", "email": "demo@example.com" } }, "name": { "type": "string", "description": "The domain name.", "example": "example.com" }, "teamId": { "nullable": true, "type": "string" }, "boughtAt": { "nullable": true, "type": "number", "description": "If it was purchased through Vercel, the timestamp in milliseconds when it was purchased.", "example": 1613602938882 }, "createdAt": { "type": "number", "description": "Timestamp in milliseconds when the domain was created in the registry.", "example": 1613602938882 }, "id": { "type": "string", "description": "The unique identifier of the domain.", "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" }, "renew": { "type": "boolean", "enum": [ false, true ], "description": "Indicates whether the domain is set to automatically renew.", "example": true }, "serviceType": { "type": "string", "enum": [ "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" }, "transferredAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain was successfully transferred into Vercel. `null` if the transfer is still processing or was never transferred in.", "example": 1613602938882 }, "transferStartedAt": { "type": "number", "description": "If transferred into Vercel, timestamp in milliseconds when the domain transfer was initiated.", "example": 1613602938882 }, "userId": { "type": "string" } }, "required": [ "boughtAt", "createdAt", "creator", "expiresAt", "id", "intendedNameservers", "name", "nameservers", "serviceType", "teamId", "userId", "verified" ], "type": "object" }, "type": "array" }, "pagination": { "$ref": "#/components/schemas/Pagination" } }, "required": [ "domains", "pagination" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "409": { "description": "" }, "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" } } ] } }, "/v7/domains": { "post": { "description": "This endpoint is used for adding a new apex domain name with Vercel for the authenticating user. Note: This endpoint is no longer used for initiating domain transfers from external registrars to Vercel. For this, please use the endpoint [Transfer-in a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/transfer-in-a-domain).", "operationId": "createOrTransferDomain", "security": [ { "bearerToken": [] } ], "summary": "Add an existing domain to the Vercel platform", "tags": [ "domains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "domain": { "properties": { "expiresAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain is set to expire. null if not bought with Vercel." }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "If the domain has the ownership verified.", "example": true }, "nameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the current nameservers of the domain.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "intendedNameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of the intended nameservers for the domain to point to Vercel DNS.", "example": [ "ns1.vercel-dns.com", "ns2.vercel-dns.com" ] }, "customNameservers": { "items": { "type": "string" }, "type": "array", "description": "A list of custom nameservers for the domain to point to. Only applies to domains purchased with Vercel.", "example": [ "ns1.nameserver.net", "ns2.nameserver.net" ] }, "creator": { "properties": { "username": { "type": "string" }, "email": { "type": "string" }, "customerId": { "nullable": true, "type": "string" }, "isDomainReseller": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" } }, "required": [ "email", "id", "username" ], "type": "object", "description": "An object containing information of the domain creator, including the user's id, username, and email.", "example": { "id": "ZspSRT4ljIEEmMHgoDwKWDei", "username": "vercel_user", "email": "demo@example.com" } }, "name": { "type": "string", "description": "The domain name.", "example": "example.com" }, "teamId": { "nullable": true, "type": "string" }, "boughtAt": { "nullable": true, "type": "number", "description": "If it was purchased through Vercel, the timestamp in milliseconds when it was purchased.", "example": 1613602938882 }, "createdAt": { "type": "number", "description": "Timestamp in milliseconds when the domain was created in the registry.", "example": 1613602938882 }, "id": { "type": "string", "description": "The unique identifier of the domain.", "example": "EmTbe5CEJyTk2yVAHBUWy4A3sRusca3GCwRjTC1bpeVnt1" }, "renew": { "type": "boolean", "enum": [ false, true ], "description": "Indicates whether the domain is set to automatically renew.", "example": true }, "serviceType": { "type": "string", "enum": [ "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" }, "transferredAt": { "nullable": true, "type": "number", "description": "Timestamp in milliseconds at which the domain was successfully transferred into Vercel. `null` if the transfer is still processing or was never transferred in.", "example": 1613602938882 }, "transferStartedAt": { "type": "number", "description": "If transferred into Vercel, timestamp in milliseconds when the domain transfer was initiated.", "example": 1613602938882 }, "userId": { "type": "string" } }, "required": [ "boughtAt", "createdAt", "creator", "expiresAt", "id", "intendedNameservers", "name", "nameservers", "serviceType", "teamId", "userId", "verified" ], "type": "object" } }, "required": [ "domain" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "The domain is not allowed to be used" }, "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 Edge Network enabled or not.", "type": "boolean", "example": true }, "zone": { "description": "Whether to create a DNS zone on Vercel. Set `true` if using Vercel nameservers.", "type": "boolean" }, "method": { "description": "The domain operation to perform.", "type": "string", "example": "add" } } }, { "additionalProperties": false, "type": "object", "description": "move-in", "required": [ "method", "name" ], "properties": { "name": { "description": "The domain name you want to add.", "type": "string", "example": "example.com" }, "method": { "description": "The domain operation to perform.", "type": "string", "example": "move-in" }, "token": { "description": "The move-in token from Move Requested email.", "type": "string", "example": "fdhfr820ad#@FAdlj$$" } } } ] } } } } } }, "/v3/domains/{domain}": { "patch": { "description": "Update or move apex domain. Note: This endpoint is no longer used for updating auto-renew or nameservers. For this, please use the endpoints [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) and [Update nameservers for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-nameservers-for-a-domain).", "operationId": "patchDomain", "security": [ { "bearerToken": [] } ], "summary": "Update or move apex domain", "tags": [ "domains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "moved": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "moved" ], "type": "object" }, { "properties": { "moved": { "type": "boolean", "enum": [ false, true ] }, "token": { "type": "string" } }, "required": [ "moved", "token" ], "type": "object" }, { "properties": { "renew": { "type": "boolean", "enum": [ false, true ] }, "customNameservers": { "items": { "type": "string" }, "type": "array" }, "zone": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "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" } } }, { "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 } }, "/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" } } ] } }, "/v1/log-drains/{id}": { "get": { "description": "Retrieves a Configurable Log Drain. This endpoint must be called with a team AccessToken (integration OAuth2 clients are not allowed). Only log drains owned by the authenticated team can be accessed.", "operationId": "getConfigurableLogDrain", "security": [ { "bearerToken": [] } ], "summary": "Retrieves a Configurable Log Drain (deprecated)", "tags": [ "logDrains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "createdFrom": { "type": "string" }, "clientId": { "type": "string" }, "configurationId": { "type": "string" }, "projectsMetadata": { "nullable": true, "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "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 ] }, "latestDeployment": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" } }, "required": [ "createdFrom" ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] }, "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" } } ] } }, "/v1/log-drains": { "get": { "description": "Retrieves a list of all the Log Drains owned by the account. This endpoint must be called with an account AccessToken (integration OAuth2 clients are not allowed). Only log drains owned by the authenticated account can be accessed.", "operationId": "getAllLogDrains", "security": [ { "bearerToken": [] } ], "summary": "Retrieves a list of all the Log Drains (deprecated)", "tags": [ "logDrains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "items": { "type": "object", "properties": { "createdFrom": { "type": "string" }, "clientId": { "type": "string" }, "configurationId": { "type": "string" }, "projectsMetadata": { "nullable": true, "items": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "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 ] }, "latestDeployment": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" } }, "required": [ "createdFrom" ] }, "type": "array" }, { "properties": { "drains": { "oneOf": [ { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "s3" ] }, "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" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filterV2": { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, "type": "array" }, { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "s3" ] }, "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" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filterV2": { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "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" } } ] }, "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." }, "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 } } }, "/v1/drains": { "post": { "description": "Create a new Drain with the provided configuration.", "operationId": "createDrain", "security": [ { "bearerToken": [] } ], "summary": "Create a new Drain", "tags": [ "drains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "s3" ] }, "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" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filterV2": { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "s3" ] }, "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" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filterV2": { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "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." }, "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" ] } ] } } } } } } }, "get": { "description": "Allows to retrieve the list of Drains of the authenticated team.", "operationId": "getDrains", "security": [ { "bearerToken": [] } ], "summary": "Retrieve a list of all Drains", "tags": [ "drains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "drains": { "oneOf": [ { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "s3" ] }, "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" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filterV2": { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, "type": "array" }, { "items": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "s3" ] }, "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" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filterV2": { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "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" } } ] } }, "/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" } } ] }, "get": { "description": "Get the information for a specific Drain by passing the drain id in the URL.", "operationId": "getDrain", "security": [ { "bearerToken": [] } ], "summary": "Find a Drain by id", "tags": [ "drains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "s3" ] }, "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" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filterV2": { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "s3" ] }, "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" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filterV2": { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "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" } } ] }, "patch": { "description": "Update the configuration of an existing drain.", "operationId": "updateDrain", "security": [ { "bearerToken": [] } ], "summary": "Update an existing Drain", "tags": [ "drains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "s3" ] }, "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" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filterV2": { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" } }, "required": [ "createdAt", "delivery", "id", "name", "ownerId", "schemas", "source", "updatedAt" ], "type": "object" }, { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectIds": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "teamId": { "nullable": true, "type": "string" }, "ownerId": { "type": "string" }, "status": { "type": "string", "enum": [ "disabled", "enabled", "errored" ] }, "firstErrorTimestamp": { "type": "number" }, "disabledAt": { "type": "number" }, "disabledBy": { "type": "string" }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available" ] }, "schemas": { "properties": { "log": { "type": "object" }, "trace": { "type": "object" }, "analytics": { "type": "object" }, "speed_insights": { "type": "object" }, "ai_gateway": { "type": "object" }, "audit_log": { "type": "object" }, "connect": { "type": "object" } }, "type": "object" }, "delivery": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "http" ] }, "endpoint": { "type": "string" }, "encoding": { "type": "string", "enum": [ "json", "ndjson" ] }, "compression": { "type": "string", "enum": [ "gzip", "none" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "otlphttp" ] }, "endpoint": { "properties": { "traces": { "type": "string" } }, "required": [ "traces" ], "type": "object" }, "encoding": { "type": "string", "enum": [ "json", "proto" ] }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "secret": { "oneOf": [ { "type": "string" }, { "properties": { "kind": { "type": "string", "enum": [ "INTEGRATION_SECRET" ] } }, "required": [ "kind" ], "type": "object" } ] } }, "required": [ "encoding", "endpoint", "headers", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "clickhouse" ] }, "endpoint": { "type": "string" }, "table": { "type": "string" } }, "required": [ "endpoint", "table", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "s3" ] }, "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" ] }, "objectAcl": { "type": "string", "enum": [ "authenticated-read", "aws-exec-read", "bucket-owner-full-control", "bucket-owner-read", "private", "public-read", "public-read-write" ] } }, "required": [ "compression", "encoding", "endpoint", "fileStructure", "region", "roleArn", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "internal" ] }, "target": { "type": "string", "enum": [ "vercel-otel-traces-db" ] } }, "required": [ "target", "type" ], "type": "object" } ] }, "sampling": { "items": { "properties": { "type": { "type": "string", "enum": [ "head_sampling" ] }, "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" } }, "required": [ "rate", "type" ], "type": "object" }, "type": "array" }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] }, "filterV2": { "properties": { "version": { "type": "string", "enum": [ "v2" ] }, "filter": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "basic" ] }, "project": { "properties": { "ids": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "log": { "properties": { "sources": { "items": { "type": "string", "enum": [ "build", "edge", "external", "firewall", "lambda", "redirect", "static" ] }, "type": "array" }, "legacy_excludeCachedStaticAssetLogs": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "deployment": { "properties": { "environments": { "items": { "type": "string", "enum": [ "preview", "production" ] }, "type": "array" } }, "type": "object" } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "odata" ] }, "text": { "type": "string" } }, "required": [ "text", "type" ], "type": "object" } ] } }, "required": [ "filter", "version" ], "type": "object" }, "integrationIcon": { "type": "string" }, "integrationConfigurationUri": { "type": "string" }, "integrationWebsite": { "type": "string" }, "projectAccess": { "oneOf": [ { "properties": { "access": { "type": "string", "enum": [ "all" ] }, "managedBy": { "type": "string", "enum": [ "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" ] } ] } } } } } } } }, "/v1/drains/test": { "post": { "description": "Validate the delivery configuration of a Drain using sample events.", "operationId": "testDrain", "security": [ { "bearerToken": [] } ], "summary": "Validate Drain delivery configuration", "tags": [ "drains" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "status": { "type": "string" }, "error": { "type": "string" }, "endpoint": { "type": "string" } }, "required": [ "endpoint", "error", "status" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "" }, "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" } } ], "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" ] } } } ] } } } } } } } }, "/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" } } } } } } } }, "/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, "type": "number" }, "tags": { "oneOf": [ { "items": { "maxLength": 256, "type": "string" }, "maxItems": 16, "minItems": 1, "type": "array" }, { "maxLength": 8196, "type": "string" } ] }, "target": { "enum": [ "production", "preview" ], "type": "string" } } } } } } } }, "/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": { "maxLength": 8192, "type": "string" }, "maxItems": 8, "minItems": 1, "type": "array" } } } } } } } }, "/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, "type": "number" }, "srcImages": { "items": { "maxLength": 8192, "type": "string" }, "maxItems": 8, "minItems": 1, "type": "array" } } } } } } } }, "/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": { "properties": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "type": "string", "description": "The ID of the user who created the Edge Config, optional because it is not always set." }, "ownerId": { "type": "string" }, "slug": { "type": "string", "description": "Name for the Edge Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" }, "digest": { "type": "string" }, "purpose": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "flags" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experimentation" ] }, "resourceId": { "type": "string" } }, "required": [ "resourceId", "type" ], "type": "object" } ] }, "deletedAt": { "nullable": true, "type": "number" }, "transfer": { "properties": { "fromAccountId": { "type": "string" }, "startedAt": { "type": "number" }, "doneAt": { "nullable": true, "type": "number" } }, "required": [ "doneAt", "fromAccountId", "startedAt" ], "type": "object", "description": "Keeps track of the current state of the Edge Config while it gets transferred." }, "schema": { "type": "object" }, "syncedToDynamoAt": { "type": "number", "description": "Timestamp of when the Edge Config was synced to DynamoDB initially. It is only set when syncing the entire Edge Config, not when updating." }, "sizeInBytes": { "type": "number" }, "itemCount": { "type": "number" } }, "required": [ "createdAt", "digest", "id", "itemCount", "ownerId", "sizeInBytes", "slug", "updatedAt" ], "type": "object", "description": "List of all global configs." } } } }, "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": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ] }, "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": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "type": "string", "description": "The ID of the user who created the Edge Config, optional because it is not always set." }, "ownerId": { "type": "string" }, "slug": { "type": "string", "description": "Name for the Edge Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" }, "digest": { "type": "string" }, "purpose": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "flags" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experimentation" ] }, "resourceId": { "type": "string" } }, "required": [ "resourceId", "type" ], "type": "object" } ] }, "deletedAt": { "nullable": true, "type": "number" }, "transfer": { "properties": { "fromAccountId": { "type": "string" }, "startedAt": { "type": "number" }, "doneAt": { "nullable": true, "type": "number" } }, "required": [ "doneAt", "fromAccountId", "startedAt" ], "type": "object", "description": "Keeps track of the current state of the Edge Config while it gets transferred." }, "schema": { "type": "object" }, "syncedToDynamoAt": { "type": "number", "description": "Timestamp of when the Edge Config was synced to DynamoDB initially. It is only set when syncing the entire Edge Config, not when updating." }, "sizeInBytes": { "type": "number" }, "itemCount": { "type": "number" } }, "required": [ "createdAt", "digest", "id", "itemCount", "ownerId", "sizeInBytes", "slug", "updatedAt" ], "type": "object", "description": "An Edge Config" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "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": {} } } } } } } } }, "/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": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "type": "string", "description": "The ID of the user who created the Edge Config, optional because it is not always set." }, "ownerId": { "type": "string" }, "slug": { "type": "string", "description": "Name for the Edge Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" }, "digest": { "type": "string" }, "purpose": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "flags" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experimentation" ] }, "resourceId": { "type": "string" } }, "required": [ "resourceId", "type" ], "type": "object" } ] }, "deletedAt": { "nullable": true, "type": "number" }, "transfer": { "properties": { "fromAccountId": { "type": "string" }, "startedAt": { "type": "number" }, "doneAt": { "nullable": true, "type": "number" } }, "required": [ "doneAt", "fromAccountId", "startedAt" ], "type": "object", "description": "Keeps track of the current state of the Edge Config while it gets transferred." }, "schema": { "type": "object" }, "syncedToDynamoAt": { "type": "number", "description": "Timestamp of when the Edge Config was synced to DynamoDB initially. It is only set when syncing the entire Edge Config, not when updating." }, "sizeInBytes": { "type": "number" }, "itemCount": { "type": "number" } }, "required": [ "createdAt", "digest", "id", "itemCount", "ownerId", "sizeInBytes", "slug", "updatedAt" ], "type": "object", "description": "The 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" } } ] }, "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": { "id": { "type": "string" }, "createdAt": { "type": "number" }, "createdBy": { "type": "string", "description": "The ID of the user who created the Edge Config, optional because it is not always set." }, "ownerId": { "type": "string" }, "slug": { "type": "string", "description": "Name for the Edge Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" }, "digest": { "type": "string" }, "purpose": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "flags" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "experimentation" ] }, "resourceId": { "type": "string" } }, "required": [ "resourceId", "type" ], "type": "object" } ] }, "deletedAt": { "nullable": true, "type": "number" }, "transfer": { "properties": { "fromAccountId": { "type": "string" }, "startedAt": { "type": "number" }, "doneAt": { "nullable": true, "type": "number" } }, "required": [ "doneAt", "fromAccountId", "startedAt" ], "type": "object", "description": "Keeps track of the current state of the Edge Config while it gets transferred." }, "schema": { "type": "object" }, "syncedToDynamoAt": { "type": "number", "description": "Timestamp of when the Edge Config was synced to DynamoDB initially. It is only set when syncing the entire Edge Config, not when updating." }, "sizeInBytes": { "type": "number" }, "itemCount": { "type": "number" } }, "required": [ "createdAt", "digest", "id", "itemCount", "ownerId", "sizeInBytes", "slug", "updatedAt" ], "type": "object", "description": "An Edge Config" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "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" } } } } } } }, "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" } } ] } }, "/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/EdgeConfigItem" }, "type": "array" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] }, "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": { "oneOf": [ { "type": "string", "maxLength": 512 }, { "type": "string" } ] } }, "anyOf": [ { "properties": { "operation": {} }, "required": [ "operation", "key", "value" ] }, { "properties": { "operation": { "enum": [ "update", "upsert" ] } }, "required": [ "operation", "key", "value" ] }, { "properties": { "operation": { "enum": [ "update", "upsert" ] } }, "required": [ "operation", "key", "description" ] }, { "properties": { "operation": {} }, "required": [ "operation", "key" ], "not": { "required": [ "value", "description" ] } } ] } ] } } } } } } } } }, "/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" } } ] }, "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": {} } } } } } }, "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" } } ] } }, "/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/EdgeConfigItem" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] } }, "/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": "The Global Config.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EdgeConfigToken" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] }, "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" ] } ] } } } } } }, "/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/EdgeConfigToken" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] } }, "/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": { "token": { "type": "string" }, "id": { "type": "string" } }, "required": [ "id", "token" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "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" } } } } } } } }, "/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": { "id": { "type": "string" }, "lastModified": { "type": "number" }, "backup": { "properties": { "slug": { "type": "string", "description": "Name for the Edge Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" }, "items": { "additionalProperties": { "properties": { "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "value": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "description": { "type": "string" } }, "required": [ "createdAt", "updatedAt", "value" ], "type": "object" }, "type": "object" }, "digest": { "type": "string" } }, "required": [ "digest", "items", "slug", "updatedAt" ], "type": "object" }, "metadata": { "properties": { "updatedAt": { "type": "string" }, "updatedBy": { "type": "string" }, "itemsCount": { "type": "number" }, "itemsBytes": { "type": "number" } }, "type": "object" }, "user": { "properties": { "id": { "type": "string" }, "username": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" }, "avatar": { "type": "string" } }, "required": [ "email", "id", "username" ], "type": "object" } }, "required": [ "backup", "id", "lastModified", "metadata" ], "type": "object", "description": "The object the API responds with when requesting an Edge Config backup" }, { "properties": { "user": { "properties": { "id": { "type": "string" }, "username": { "type": "string" }, "email": { "type": "string" }, "name": { "type": "string" }, "avatar": { "type": "string" } }, "required": [ "email", "id", "username" ], "type": "object" }, "id": { "type": "string" }, "lastModified": { "type": "number" }, "backup": { "properties": { "slug": { "type": "string", "description": "Name for the Edge Config Names are not unique. Must start with an alphabetic character and can contain only alphanumeric characters and underscores)." }, "updatedAt": { "type": "number" }, "items": { "additionalProperties": { "properties": { "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "value": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "description": { "type": "string" } }, "required": [ "createdAt", "updatedAt", "value" ], "type": "object" }, "type": "object" }, "digest": { "type": "string" } }, "required": [ "digest", "items", "slug", "updatedAt" ], "type": "object" }, "metadata": { "properties": { "updatedAt": { "type": "string" }, "updatedBy": { "type": "string" }, "itemsCount": { "type": "number" }, "itemsBytes": { "type": "number" } }, "type": "object" } }, "required": [ "backup", "id", "lastModified", "metadata", "user" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] } }, "/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": { "status": { "type": "string", "enum": [ "ok" ] }, "restoredFrom": { "type": "string" }, "previousDigest": { "type": "string" }, "digest": { "type": "string" } }, "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" } } ] } }, "/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": { "updatedAt": { "type": "string" }, "updatedBy": { "type": "string" }, "itemsCount": { "type": "number" }, "itemsBytes": { "type": "number" } }, "type": "object" }, "id": { "type": "string" }, "lastModified": { "type": "number" } }, "required": [ "id", "lastModified" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "hasNext": { "type": "boolean", "enum": [ false, true ] }, "next": { "type": "string" } }, "required": [ "hasNext" ], "type": "object" } }, "required": [ "backups", "pagination" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] } }, "/v1/env": { "post": { "description": "Creates shared environment variable(s) for a team.", "operationId": "createSharedEnvVariable", "security": [ { "bearerToken": [] } ], "summary": "Create one or more shared environment variables", "tags": [ "environment" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "created": { "items": { "properties": { "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "value": { "type": "string", "description": "The value of the Shared Env Var." }, "projectId": { "items": { "type": "string" }, "type": "array", "description": "The unique identifiers of the projects which the Shared Env Var is linked to.", "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrasEFg" ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "sensitive", "system" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "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" }, "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array", "description": "The custom environment IDs that this Shared Env Var is scoped to." }, "decrypted": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env variable is decrypted" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." } }, "type": "object" }, "type": "array" }, "failed": { "items": { "properties": { "error": { "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "key": { "type": "string" }, "envVarId": { "type": "string" }, "envVarKey": { "type": "string" }, "action": { "type": "string" }, "link": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" } ] }, "gitBranch": { "type": "string" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "project": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" } }, "required": [ "error" ], "type": "object" }, "type": "array" } }, "required": [ "created", "failed" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "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 } } } } } } }, "get": { "description": "Lists all Shared Environment Variables for a team, taking into account optional filters.", "operationId": "listSharedEnvVariable", "security": [ { "bearerToken": [] } ], "summary": "Lists all Shared Environment Variables for a team", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "data": { "items": { "properties": { "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "value": { "type": "string", "description": "The value of the Shared Env Var." }, "projectId": { "items": { "type": "string" }, "type": "array", "description": "The unique identifiers of the projects which the Shared Env Var is linked to.", "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrasEFg" ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "sensitive", "system" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "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" }, "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array", "description": "The custom environment IDs that this Shared Env Var is scoped to." }, "decrypted": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env variable is decrypted" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." } }, "type": "object" }, "type": "array" }, "pagination": { "$ref": "#/components/schemas/Pagination" } }, "required": [ "data", "pagination" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] }, "patch": { "description": "Updates a given Shared Environment Variable for a Team.", "operationId": "updateSharedEnvVariable", "security": [ { "bearerToken": [] } ], "summary": "Updates one or more shared environment variables", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "updated": { "items": { "properties": { "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "value": { "type": "string", "description": "The value of the Shared Env Var." }, "projectId": { "items": { "type": "string" }, "type": "array", "description": "The unique identifiers of the projects which the Shared Env Var is linked to.", "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrasEFg" ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "sensitive", "system" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "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" }, "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array", "description": "The custom environment IDs that this Shared Env Var is scoped to." }, "decrypted": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env variable is decrypted" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." } }, "type": "object" }, "type": "array" }, "failed": { "items": { "properties": { "error": { "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "key": { "type": "string" }, "envVarId": { "type": "string" }, "envVarKey": { "type": "string" }, "action": { "type": "string" }, "link": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" } ] }, "gitBranch": { "type": "string" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "project": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" } }, "required": [ "error" ], "type": "object" }, "type": "array" } }, "required": [ "failed", "updated" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "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 } } } } } } } } } }, "delete": { "description": "Deletes one or many Shared Environment Variables for a given team.", "operationId": "deleteSharedEnvVariable", "security": [ { "bearerToken": [] } ], "summary": "Delete one or more Env Var", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "deleted": { "items": { "type": "string" }, "type": "array" }, "failed": { "items": { "properties": { "error": { "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "key": { "type": "string" }, "envVarId": { "type": "string" }, "envVarKey": { "type": "string" }, "action": { "type": "string" }, "link": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" } ] }, "gitBranch": { "type": "string" }, "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "project": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" } }, "required": [ "error" ], "type": "object" }, "type": "array" } }, "required": [ "deleted", "failed" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "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" ] } } } } } } } }, "/v1/env/{id}": { "get": { "description": "Retrieve the decrypted value of a Shared Environment Variable by id.", "operationId": "getSharedEnvVar", "security": [ { "bearerToken": [] } ], "summary": "Retrieve the decrypted value of a Shared Environment Variable by id.", "tags": [ "environment" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "created": { "type": "string", "format": "date-time", "description": "The date when the Shared Env Var was created.", "example": "2021-02-10T13:11:49.180Z" }, "key": { "type": "string", "description": "The name of the Shared Env Var.", "example": "my-api-key" }, "ownerId": { "nullable": true, "type": "string", "description": "The unique identifier of the owner (team) the Shared Env Var was created for.", "example": "team_LLHUOMOoDlqOp8wPE4kFo9pE" }, "id": { "type": "string", "description": "The unique identifier of the Shared Env Var.", "example": "env_XCG7t7AIHuO2SBA8667zNUiM" }, "createdBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who created the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "deletedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who deleted the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "updatedBy": { "nullable": true, "type": "string", "description": "The unique identifier of the user who last updated the Shared Env Var.", "example": "2qDDuGFTWXBLDNnqZfWPDp1A" }, "createdAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was created.", "example": 1609492210000 }, "deletedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was (soft) deleted.", "example": 1609492210000 }, "updatedAt": { "type": "number", "description": "Timestamp for when the Shared Env Var was last updated.", "example": 1609492210000 }, "value": { "type": "string", "description": "The value of the Shared Env Var." }, "projectId": { "items": { "type": "string" }, "type": "array", "description": "The unique identifiers of the projects which the Shared Env Var is linked to.", "example": [ "prj_2WjyKQmM8ZnGcJsPWMrHRHrE", "prj_2WjyKQmM8ZnGcJsPWMrasEFg" ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "sensitive", "system" ], "description": "The type of this cosmos doc instance, if blank, assume secret.", "example": "encrypted" }, "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" }, "applyToAllCustomEnvironments": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env varible applies to custom environments" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array", "description": "The custom environment IDs that this Shared Env Var is scoped to." }, "decrypted": { "type": "boolean", "enum": [ false, true ], "description": "whether or not this env variable is decrypted" }, "comment": { "type": "string", "description": "A user provided comment that describes what this Shared Env Var is for." }, "lastEditedByDisplayName": { "type": "string", "description": "The last editor full name or username." } }, "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] } }, "/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." }, "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" } } ] } }, "/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" } } ] } }, "/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" } } ] } }, "/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": "" } }, "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" } } ] } }, "/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" } } ] }, "put": { "description": "Create a new feature flag for a project. The flag must have a unique slug within the project and specify its kind (boolean, string, number, or json).", "operationId": "createFlag", "security": [ { "bearerToken": [] } ], "summary": "Create a flag", "tags": [ "feature-flags" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "description": { "type": "string" }, "maintainerIds": { "items": { "type": "string" }, "type": "array" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "experiment": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "numVariants": { "type": "number" }, "surfaceArea": { "type": "string" }, "stickyRequirement": { "type": "boolean", "enum": [ false, true ] }, "layer": { "type": "string" }, "guardrailMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "count", "currency", "percentage" ] }, "metricUnit": { "type": "string", "enum": [ "session", "user", "visitor" ] }, "directionality": { "type": "string", "enum": [ "decreaseIsGood", "increaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "hypothesis": { "type": "string" }, "device": { "type": "string", "enum": [ "android", "desktop", "ios", "mweb" ] }, "controlVariantId": { "type": "string" }, "startedAt": { "type": "number" }, "endedAt": { "type": "number" }, "decision": { "type": "string" }, "decisionReason": { "type": "string" }, "duration": { "type": "number" }, "durationUnit": { "type": "string", "enum": [ "days", "exposures" ] }, "allocationPercent": { "type": "number" }, "allocationUnit": { "type": "string", "enum": [ "cookieId", "userId", "visitorId" ] }, "primaryMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "count", "currency", "percentage" ] }, "metricUnit": { "type": "string", "enum": [ "session", "user", "visitor" ] }, "directionality": { "type": "string", "enum": [ "decreaseIsGood", "increaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "status": { "type": "string", "enum": [ "closed", "draft", "paused", "running" ] } }, "required": [ "allocationUnit", "primaryMetrics", "status" ], "type": "object" }, "updatedBy": { "type": "string" }, "variants": { "items": { "type": "object" }, "type": "array" }, "id": { "type": "string" }, "environments": { "additionalProperties": { "properties": { "reuse": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "environment": { "type": "string" } }, "required": [ "active", "environment" ], "type": "object" }, "targets": { "additionalProperties": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "type": "object" }, "revision": { "type": "number" }, "pausedOutcome": { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, "fallthrough": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "active": { "type": "boolean", "enum": [ false, true ] }, "rules": { "items": { "properties": { "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "conditions": { "items": { "properties": { "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "type": { "type": "string", "enum": [ "list", "list/inline" ] }, "items": { "items": { "oneOf": [ { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ], "type": "object" }, { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "regex" ] }, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "cmp": { "type": "string", "enum": [ "!contains", "!endsWith", "!eq", "!ex", "!oneOf", "!regex", "!startsWith", "after", "before", "contains", "containsAllOf", "containsAnyOf", "containsNoneOf", "endsWith", "eq", "ex", "gt", "gte", "lt", "lte", "oneOf", "regex", "startsWith" ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" } }, "required": [ "active", "fallthrough", "pausedOutcome", "rules" ], "type": "object" }, "type": "object" }, "kind": { "type": "string", "enum": [ "boolean", "json", "number", "string" ] }, "revision": { "type": "number" }, "seed": { "type": "number" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "slug": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "createdBy": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "flag" ] } }, "required": [ "createdAt", "createdBy", "environments", "id", "kind", "ownerId", "projectId", "revision", "seed", "slug", "state", "typeName", "updatedAt", "variants" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "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, 100% is served indefinitely. The final implicit 100% slot does not need to be listed. Example: [[5_000, 21_600_000], [10_000, 28_800_000]] means 5‰ for 6h, then 10‰ for 8h, then 100% indefinitely.", "items": { "type": "object", "additionalProperties": false, "properties": { "promille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Promille of traffic for rollToVariant (0-100_000, where 1_000 = 1%)" }, "durationMs": { "type": "number", "minimum": 0, "description": "How long this promille is served in ms before moving to the next slot." } }, "required": [ "promille", "durationMs" ] }, "minItems": 1 } }, "required": [ "type", "base", "startTimestamp", "rollFromVariantId", "rollToVariantId", "defaultVariantId", "slots" ] } ] } }, "required": [ "id", "conditions", "outcome" ] }, "maxItems": 10000 }, "fallthrough": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {}, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "weights": { "type": "object", "additionalProperties": { "type": "number" }, "description": "The distribution for each variant" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" } }, "required": [ "type", "base", "weights", "defaultVariantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "startTimestamp": { "type": "number", "description": "Epoch ms when the rollout begins" }, "rollFromVariantId": { "type": "string", "description": "The variant to roll away from" }, "rollToVariantId": { "type": "string", "description": "The variant to roll towards" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" }, "slots": { "type": "array", "description": "Each slot defines a promille and how long it is served for. After all slots expire, 100% is served indefinitely. The final implicit 100% slot does not need to be listed. Example: [[5_000, 21_600_000], [10_000, 28_800_000]] means 5‰ for 6h, then 10‰ for 8h, then 100% indefinitely.", "items": { "type": "object", "additionalProperties": false, "properties": { "promille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Promille of traffic for rollToVariant (0-100_000, where 1_000 = 1%)" }, "durationMs": { "type": "number", "minimum": 0, "description": "How long this promille is served in ms before moving to the next slot." } }, "required": [ "promille", "durationMs" ] }, "minItems": 1 } }, "required": [ "type", "base", "startTimestamp", "rollFromVariantId", "rollToVariantId", "defaultVariantId", "slots" ] } ] }, "revision": { "type": "number", "description": "The revision of the environment config" } }, "required": [ "active", "pausedOutcome", "rules", "fallthrough" ] }, "maxProperties": 10 }, "seed": { "type": "number", "minimum": 0, "maximum": 100000, "description": "A random seed to prevent split points in different flags from having the same targets" }, "description": { "description": "A description of the flag", "type": "string" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "maintainerIds": { "description": "The user ids of the maintainers of the flag", "type": "array", "items": { "type": "string", "maxLength": 24 }, "maxItems": 5 }, "permanent": { "description": "Whether this flag is marked as permanent, indicating it should not be removed", "type": "boolean" }, "tags": { "description": "Tags for categorizing the flag", "type": "array", "items": { "type": "string", "maxLength": 64 }, "maxItems": 20, "uniqueItems": true } }, "required": [ "slug", "kind", "environments" ] } } } } } }, "/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" } } ] }, "patch": { "description": "Update an existing feature flag. This endpoint supports partial updates, allowing you to modify specific properties like variants, environments, or state without providing the full flag configuration.", "operationId": "updateFlag", "security": [ { "bearerToken": [] } ], "summary": "Update a flag", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "description": { "type": "string" }, "maintainerIds": { "items": { "type": "string" }, "type": "array" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "experiment": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "numVariants": { "type": "number" }, "surfaceArea": { "type": "string" }, "stickyRequirement": { "type": "boolean", "enum": [ false, true ] }, "layer": { "type": "string" }, "guardrailMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "count", "currency", "percentage" ] }, "metricUnit": { "type": "string", "enum": [ "session", "user", "visitor" ] }, "directionality": { "type": "string", "enum": [ "decreaseIsGood", "increaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "hypothesis": { "type": "string" }, "device": { "type": "string", "enum": [ "android", "desktop", "ios", "mweb" ] }, "controlVariantId": { "type": "string" }, "startedAt": { "type": "number" }, "endedAt": { "type": "number" }, "decision": { "type": "string" }, "decisionReason": { "type": "string" }, "duration": { "type": "number" }, "durationUnit": { "type": "string", "enum": [ "days", "exposures" ] }, "allocationPercent": { "type": "number" }, "allocationUnit": { "type": "string", "enum": [ "cookieId", "userId", "visitorId" ] }, "primaryMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "count", "currency", "percentage" ] }, "metricUnit": { "type": "string", "enum": [ "session", "user", "visitor" ] }, "directionality": { "type": "string", "enum": [ "decreaseIsGood", "increaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "status": { "type": "string", "enum": [ "closed", "draft", "paused", "running" ] } }, "required": [ "allocationUnit", "primaryMetrics", "status" ], "type": "object" }, "updatedBy": { "type": "string" }, "variants": { "items": { "type": "object" }, "type": "array" }, "id": { "type": "string" }, "environments": { "additionalProperties": { "properties": { "reuse": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "environment": { "type": "string" } }, "required": [ "active", "environment" ], "type": "object" }, "targets": { "additionalProperties": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "type": "object" }, "revision": { "type": "number" }, "pausedOutcome": { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, "fallthrough": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "active": { "type": "boolean", "enum": [ false, true ] }, "rules": { "items": { "properties": { "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "conditions": { "items": { "properties": { "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "type": { "type": "string", "enum": [ "list", "list/inline" ] }, "items": { "items": { "oneOf": [ { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ], "type": "object" }, { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "regex" ] }, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "cmp": { "type": "string", "enum": [ "!contains", "!endsWith", "!eq", "!ex", "!oneOf", "!regex", "!startsWith", "after", "before", "contains", "containsAllOf", "containsAnyOf", "containsNoneOf", "endsWith", "eq", "ex", "gt", "gte", "lt", "lte", "oneOf", "regex", "startsWith" ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" } }, "required": [ "active", "fallthrough", "pausedOutcome", "rules" ], "type": "object" }, "type": "object" }, "kind": { "type": "string", "enum": [ "boolean", "json", "number", "string" ] }, "revision": { "type": "number" }, "seed": { "type": "number" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "slug": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "createdBy": { "type": "string" }, "ownerId": { "type": "string" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "flag" ] } }, "required": [ "createdAt", "createdBy", "environments", "id", "kind", "ownerId", "projectId", "revision", "seed", "slug", "state", "typeName", "updatedAt", "variants" ], "type": "object" }, { "$ref": "#/components/schemas/Flag" } ] } } } }, "304": { "description": "" }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "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, 100% is served indefinitely. The final implicit 100% slot does not need to be listed. Example: [[5_000, 21_600_000], [10_000, 28_800_000]] means 5‰ for 6h, then 10‰ for 8h, then 100% indefinitely.", "items": { "type": "object", "additionalProperties": false, "properties": { "promille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Promille of traffic for rollToVariant (0-100_000, where 1_000 = 1%)" }, "durationMs": { "type": "number", "minimum": 0, "description": "How long this promille is served in ms before moving to the next slot." } }, "required": [ "promille", "durationMs" ] }, "minItems": 1 } }, "required": [ "type", "base", "startTimestamp", "rollFromVariantId", "rollToVariantId", "defaultVariantId", "slots" ] } ] } }, "required": [ "id", "conditions", "outcome" ] }, "maxItems": 10000 }, "fallthrough": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "type": {}, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "weights": { "type": "object", "additionalProperties": { "type": "number" }, "description": "The distribution for each variant" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" } }, "required": [ "type", "base", "weights", "defaultVariantId" ] }, { "type": "object", "additionalProperties": false, "properties": { "type": {}, "base": { "type": "object", "additionalProperties": false, "properties": { "type": {}, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "type", "kind", "attribute" ] }, "startTimestamp": { "type": "number", "description": "Epoch ms when the rollout begins" }, "rollFromVariantId": { "type": "string", "description": "The variant to roll away from" }, "rollToVariantId": { "type": "string", "description": "The variant to roll towards" }, "defaultVariantId": { "type": "string", "description": "This variant will be used when the base attribute does not exist" }, "slots": { "type": "array", "description": "Each slot defines a promille and how long it is served for. After all slots expire, 100% is served indefinitely. The final implicit 100% slot does not need to be listed. Example: [[5_000, 21_600_000], [10_000, 28_800_000]] means 5‰ for 6h, then 10‰ for 8h, then 100% indefinitely.", "items": { "type": "object", "additionalProperties": false, "properties": { "promille": { "type": "number", "minimum": 0, "maximum": 100000, "description": "Promille of traffic for rollToVariant (0-100_000, where 1_000 = 1%)" }, "durationMs": { "type": "number", "minimum": 0, "description": "How long this promille is served in ms before moving to the next slot." } }, "required": [ "promille", "durationMs" ] }, "minItems": 1 } }, "required": [ "type", "base", "startTimestamp", "rollFromVariantId", "rollToVariantId", "defaultVariantId", "slots" ] } ] }, "revision": { "type": "number", "description": "The revision of the environment config" } }, "required": [ "active", "pausedOutcome", "rules", "fallthrough" ] }, "maxProperties": 10 }, "seed": { "type": "number", "minimum": 0, "maximum": 100000, "description": "A random seed to prevent split points in different flags from having the same targets" }, "description": { "description": "A description of the flag", "type": "string" }, "state": { "type": "string", "enum": [ "active", "archived" ] }, "maintainerIds": { "description": "The user ids of the maintainers of the flag", "type": "array", "items": { "type": "string", "maxLength": 24 }, "maxItems": 5 }, "permanent": { "description": "Whether this flag is marked as permanent, indicating it should not be removed", "type": "boolean" }, "tags": { "description": "Tags for categorizing the flag", "type": "array", "items": { "type": "string", "maxLength": 64 }, "maxItems": 20, "uniqueItems": true } } } } } } }, "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" } } ] } }, "/v1/projects/{projectIdOrName}/feature-flags/flags/{flagIdOrSlug}/versions": { "get": { "description": "Lists flag versions for a given flag.", "operationId": "listFlagVersions", "security": [ { "bearerToken": [] } ], "summary": "List flag versions", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "versions": { "items": { "properties": { "createdBy": { "type": "string" }, "message": { "type": "string" }, "data": { "properties": { "description": { "type": "string" }, "maintainerIds": { "items": { "type": "string" }, "type": "array" }, "permanent": { "type": "boolean", "enum": [ false, true ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "experiment": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "numVariants": { "type": "number" }, "surfaceArea": { "type": "string" }, "stickyRequirement": { "type": "boolean", "enum": [ false, true ] }, "layer": { "type": "string" }, "guardrailMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "count", "currency", "percentage" ] }, "metricUnit": { "type": "string", "enum": [ "session", "user", "visitor" ] }, "directionality": { "type": "string", "enum": [ "decreaseIsGood", "increaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "hypothesis": { "type": "string" }, "device": { "type": "string", "enum": [ "android", "desktop", "ios", "mweb" ] }, "controlVariantId": { "type": "string" }, "startedAt": { "type": "number" }, "endedAt": { "type": "number" }, "decision": { "type": "string" }, "decisionReason": { "type": "string" }, "duration": { "type": "number" }, "durationUnit": { "type": "string", "enum": [ "days", "exposures" ] }, "allocationPercent": { "type": "number" }, "allocationUnit": { "type": "string", "enum": [ "cookieId", "userId", "visitorId" ] }, "primaryMetrics": { "items": { "properties": { "description": { "type": "string" }, "metricFormula": { "type": "string" }, "name": { "type": "string" }, "metricType": { "type": "string", "enum": [ "count", "currency", "percentage" ] }, "metricUnit": { "type": "string", "enum": [ "session", "user", "visitor" ] }, "directionality": { "type": "string", "enum": [ "decreaseIsGood", "increaseIsGood" ] } }, "required": [ "directionality", "metricType", "metricUnit", "name" ], "type": "object" }, "type": "array" }, "status": { "type": "string", "enum": [ "closed", "draft", "paused", "running" ] } }, "required": [ "allocationUnit", "primaryMetrics", "status" ], "type": "object" }, "variants": { "items": { "type": "object" }, "type": "array" }, "environments": { "additionalProperties": { "properties": { "reuse": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "environment": { "type": "string" } }, "required": [ "active", "environment" ], "type": "object" }, "targets": { "additionalProperties": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "type": "object" }, "revision": { "type": "number" }, "pausedOutcome": { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, "fallthrough": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "active": { "type": "boolean", "enum": [ false, true ] }, "rules": { "items": { "properties": { "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "variant" ] }, "variantId": { "type": "string" } }, "required": [ "type", "variantId" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "weights": { "additionalProperties": { "type": "number" }, "type": "object" }, "defaultVariantId": { "type": "string" } }, "required": [ "base", "defaultVariantId", "type", "weights" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "rollout" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "defaultVariantId": { "type": "string" }, "startTimestamp": { "type": "number" }, "rollFromVariantId": { "type": "string" }, "rollToVariantId": { "type": "string" }, "slots": { "items": { "properties": { "promille": { "type": "number" }, "durationMs": { "type": "number" } }, "required": [ "durationMs", "promille" ], "type": "object" }, "type": "array" } }, "required": [ "base", "defaultVariantId", "rollFromVariantId", "rollToVariantId", "slots", "startTimestamp", "type" ], "type": "object" } ] }, "conditions": { "items": { "properties": { "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "type": { "type": "string", "enum": [ "list", "list/inline" ] }, "items": { "items": { "oneOf": [ { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ], "type": "object" }, { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "regex" ] }, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "cmp": { "type": "string", "enum": [ "!contains", "!endsWith", "!eq", "!ex", "!oneOf", "!regex", "!startsWith", "after", "before", "contains", "containsAllOf", "containsAnyOf", "containsNoneOf", "endsWith", "eq", "ex", "gt", "gte", "lt", "lte", "oneOf", "regex", "startsWith" ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" } }, "required": [ "active", "fallthrough", "pausedOutcome", "rules" ], "type": "object" }, "type": "object" }, "seed": { "type": "number" }, "state": { "type": "string", "enum": [ "active", "archived" ] } }, "required": [ "environments", "seed", "state", "variants" ], "type": "object" }, "id": { "type": "string" }, "revision": { "type": "number" }, "createdAt": { "type": "number" }, "flagId": { "type": "string" }, "changedEnvironments": { "items": { "type": "string" }, "type": "array" }, "metadata": { "properties": { "creator": { "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" } }, "type": "object" } }, "required": [ "changedEnvironments", "createdAt", "data", "flagId", "id", "revision" ], "type": "object" }, "type": "array" }, "pagination": { "type": "object" } }, "required": [ "pagination", "versions" ], "type": "object" } } } }, "304": { "description": "" }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] } }, "/v1/projects/{projectIdOrName}/feature-flags/settings": { "get": { "description": "Retrieve feature flag settings for a project.", "operationId": "getFlagSettings", "security": [ { "bearerToken": [] } ], "summary": "Get project flag settings", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "typeName": { "type": "string", "enum": [ "settings" ] }, "projectId": { "type": "string" }, "ownerId": { "type": "string" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "type": "string" }, "type": "array" }, "entities": { "items": { "properties": { "kind": { "type": "string" }, "label": { "type": "string" }, "attributes": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "segmentCount": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "packRevision": { "type": "number" }, "configUpdatedAt": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "type": "object" } } } }, "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" } } ] }, "patch": { "description": "Update feature flag settings for a project.", "operationId": "updateFlagSettings", "security": [ { "bearerToken": [] } ], "summary": "Update project flag settings", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "typeName": { "type": "string", "enum": [ "settings" ] }, "projectId": { "type": "string" }, "ownerId": { "type": "string" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "type": "string" }, "type": "array" }, "entities": { "items": { "properties": { "kind": { "type": "string" }, "label": { "type": "string" }, "attributes": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "segmentCount": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "packRevision": { "type": "number" }, "configUpdatedAt": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "type": "object" } } } }, "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "typeName": { "type": "string", "enum": [ "settings" ] }, "projectId": { "type": "string" }, "ownerId": { "type": "string" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "type": "string" }, "type": "array" }, "entities": { "items": { "properties": { "kind": { "type": "string" }, "label": { "type": "string" }, "attributes": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "segmentCount": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "packRevision": { "type": "number" }, "configUpdatedAt": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "type": "object" } } } }, "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": 128, "items": { "type": "object", "additionalProperties": false, "required": [ "label", "value" ], "properties": { "label": { "type": "string", "maxLength": 128 }, "value": { "type": "string", "maxLength": 128 } } } } } } } } } }, "environments": { "description": "The environments to sync", "type": "array", "items": { "type": "string" } } } } } } } } }, "/v1/teams/{teamId}/feature-flags/settings": { "get": { "description": "Retrieve feature flag settings for projects in a team.", "operationId": "listTeamFlagSettings", "security": [ { "bearerToken": [] } ], "summary": "List team project flag settings", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "data": { "items": { "properties": { "typeName": { "type": "string", "enum": [ "settings" ] }, "projectId": { "type": "string" }, "ownerId": { "type": "string" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "type": "string" }, "type": "array" }, "entities": { "items": { "properties": { "kind": { "type": "string" }, "label": { "type": "string" }, "attributes": { "items": { "properties": { "key": { "type": "string" }, "type": { "type": "string" }, "labels": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" } }, "required": [ "key", "type" ], "type": "object" }, "type": "array" } }, "required": [ "attributes", "kind", "label" ], "type": "object" }, "type": "array" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "metadata": { "properties": { "activeFlagCount": { "type": "number" }, "archivedFlagCount": { "type": "number" }, "segmentCount": { "type": "number" }, "packSizeInBytes": { "type": "number" }, "packRevision": { "type": "number" }, "configUpdatedAt": { "type": "number" } }, "required": [ "activeFlagCount", "archivedFlagCount", "packSizeInBytes", "segmentCount" ], "type": "object" } }, "required": [ "enabled", "entities", "environments", "metadata", "projectId", "typeName" ], "type": "object" }, "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." }, "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" } } ] } }, "/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." }, "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": "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" } } ] } }, "/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." }, "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" } } ] } }, "/v1/projects/{projectIdOrName}/feature-flags/segments": { "put": { "description": "Create a new feature flag segment.", "operationId": "createFlagSegment", "security": [ { "bearerToken": [] } ], "summary": "Create a segment", "tags": [ "feature-flags" ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "properties": { "description": { "type": "string" }, "createdBy": { "type": "string" }, "usedByFlags": { "items": { "type": "string" }, "type": "array" }, "usedBySegments": { "items": { "type": "string" }, "type": "array" }, "data": { "properties": { "rules": { "items": { "properties": { "id": { "type": "string" }, "outcome": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "all" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "split" ] }, "base": { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" }, "passPromille": { "type": "number" } }, "required": [ "base", "passPromille", "type" ], "type": "object" } ] }, "conditions": { "items": { "properties": { "rhs": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "type": { "type": "string", "enum": [ "list", "list/inline" ] }, "items": { "items": { "oneOf": [ { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "number" } }, "required": [ "value" ], "type": "object" }, { "properties": { "label": { "type": "string" }, "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" } }, "required": [ "items", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "regex" ] }, "pattern": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "flags", "pattern", "type" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] }, "cmpOptions": { "properties": { "ignoreCase": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "lhs": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "segment" ] } }, "required": [ "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "entity" ] }, "kind": { "type": "string" }, "attribute": { "type": "string" } }, "required": [ "attribute", "kind", "type" ], "type": "object" } ] }, "cmp": { "type": "string", "enum": [ "!contains", "!endsWith", "!eq", "!ex", "!oneOf", "!regex", "!startsWith", "after", "before", "contains", "containsAllOf", "containsAnyOf", "containsNoneOf", "endsWith", "eq", "ex", "gt", "gte", "lt", "lte", "oneOf", "regex", "startsWith" ] } }, "required": [ "cmp", "lhs" ], "type": "object" }, "type": "array" } }, "required": [ "conditions", "id", "outcome" ], "type": "object" }, "type": "array" }, "include": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" }, "exclude": { "additionalProperties": { "additionalProperties": { "items": { "properties": { "note": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "type": "object" }, "type": "object" } }, "type": "object" }, "id": { "type": "string" }, "label": { "type": "string" }, "slug": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "projectId": { "type": "string" }, "typeName": { "type": "string", "enum": [ "segment" ] }, "hint": { "type": "string" } }, "required": [ "createdAt", "data", "hint", "id", "label", "projectId", "slug", "typeName", "updatedAt" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "" }, "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" ] } } } } }, "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" } } ] } }, "/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" } } ] }, "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" } } ] }, "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" } } } } } } } }, "/v1/deployments/{deploymentId}/feature-flags": { "get": { "description": "Retrieve the feature flags of a deployment.", "operationId": "getDeploymentFeatureFlags", "security": [ { "bearerToken": [] } ], "summary": "Retrieve the feature flags of a deployment", "tags": [ "feature-flags" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "flags": { "items": { "type": "object" }, "type": "array" }, "status": { "nullable": true, "properties": { "deploymentId": { "type": "string" }, "projectId": { "type": "string" }, "responseStatus": { "type": "number", "description": "The HTTP status code from the flags discovery endpoint." }, "flagCount": { "type": "number", "description": "The number of flag definitions returned by the flags discovery endpoint." }, "createdAt": { "type": "number" } }, "required": [ "createdAt", "deploymentId", "flagCount", "projectId", "responseStatus" ], "type": "object" } }, "required": [ "flags", "status" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] } }, "/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": { "hashKey": { "type": "string" }, "projectId": { "type": "string" }, "type": { "type": "string", "enum": [ "client", "mobile", "server" ] }, "environment": { "type": "string" }, "createdBy": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "label": { "type": "string" }, "deletedAt": { "type": "number" }, "partialKeyValue": { "type": "string", "description": "Partially-masked representation of the SDK key value, safe to display in UIs. The value is the `vf__` prefix followed by the first 3 characters of the secret portion and a fixed 8-character `*` mask (e.g. `vf_server_abc********`)." } }, "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" } } ] }, "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" } } } } } } } }, "/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" } } ] } }, "/v1/integrations/git-namespaces": { "get": { "description": "Lists git namespaces for a supported provider. Supported providers are `github`, `gitlab` and `bitbucket`. If the provider is not provided, it will try to obtain it from the user that authenticated the request.", "operationId": "gitNamespaces", "security": [ { "bearerToken": [] } ], "summary": "List git namespaces by provider", "tags": [ "integrations" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "items": { "properties": { "provider": { "type": "string" }, "slug": { "type": "string" }, "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "ownerType": { "type": "string" }, "name": { "type": "string" }, "isAccessRestricted": { "type": "boolean", "enum": [ false, true ] }, "installationId": { "type": "number" }, "requireReauth": { "type": "boolean", "enum": [ false, true ] }, "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" } } ] } }, "/v1/integrations/search-repo": { "get": { "description": "Lists git repositories linked to a namespace `id` for a supported provider. A specific namespace `id` can be obtained via the `git-namespaces` endpoint. Supported providers are `github`, `gitlab` and `bitbucket`. If the provider or namespace is not provided, it will try to obtain it from the user that authenticated the request.", "operationId": "searchRepo", "security": [ { "bearerToken": [] } ], "summary": "List git repositories linked to namespace by provider", "tags": [ "integrations" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "gitAccount": { "properties": { "provider": { "type": "string", "enum": [ "bitbucket", "github", "github-custom-host", "github-limited", "gitlab", "vercel" ] }, "namespaceId": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, "required": [ "namespaceId", "provider" ], "type": "object" }, "repos": { "items": { "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "provider": { "type": "string", "enum": [ "bitbucket", "github", "github-custom-host", "github-limited", "gitlab", "vercel" ] }, "url": { "type": "string" }, "name": { "type": "string" }, "slug": { "type": "string" }, "namespace": { "type": "string" }, "owner": { "properties": { "id": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "ownerType": { "type": "string", "enum": [ "team", "user" ] }, "private": { "type": "boolean", "enum": [ false, true ] }, "defaultBranch": { "type": "string" }, "updatedAt": { "type": "number" } }, "required": [ "defaultBranch", "id", "name", "namespace", "owner", "ownerType", "private", "provider", "slug", "updatedAt", "url" ], "type": "object" }, "type": "array" } }, "required": [ "gitAccount", "repos" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "429": { "description": "" }, "500": { "description": "" } }, "parameters": [ { "name": "query", "in": "query", "schema": { "type": "string" } }, { "name": "namespaceId", "in": "query", "schema": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" } ] } }, { "name": "provider", "in": "query", "schema": { "enum": [ "github", "github-limited", "github-custom-host", "gitlab", "bitbucket" ] } }, { "name": "installationId", "in": "query", "schema": { "type": "string" } }, { "name": "host", "description": "The custom Git host if using a custom Git provider, like GitHub Enterprise Server", "in": "query", "schema": { "description": "The custom Git host if using a custom Git provider, like GitHub Enterprise Server", "type": "string", "example": "ghes-test.now.systems" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ] } }, "/v1/integrations/integration/{integrationIdOrSlug}/products/{productIdOrSlug}/plans": { "get": { "description": "Get a list of billing plans for an integration and product.", "operationId": "getBillingPlans", "security": [ { "bearerToken": [] } ], "summary": "List integration billing plans", "tags": [ "integrations" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "plans": { "items": { "properties": { "type": { "type": "string", "enum": [ "prepayment", "subscription" ] }, "id": { "type": "string" }, "name": { "type": "string" }, "scope": { "type": "string", "enum": [ "installation", "resource" ] }, "description": { "type": "string" }, "paymentMethodRequired": { "type": "boolean", "enum": [ false, true ] }, "preauthorizationAmount": { "type": "number" }, "initialCharge": { "type": "string" }, "minimumAmount": { "type": "string" }, "maximumAmount": { "type": "string" }, "maximumAmountAutoPurchasePerPeriod": { "type": "string" }, "cost": { "type": "string" }, "details": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "type": "object" }, "type": "array" }, "highlightedDetails": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "type": "object" }, "type": "array" }, "quote": { "items": { "properties": { "line": { "type": "string" }, "amount": { "type": "string" } }, "required": [ "amount", "line" ], "type": "object" }, "type": "array" }, "effectiveDate": { "type": "string" }, "disabled": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "description", "id", "name", "paymentMethodRequired", "scope", "type" ], "type": "object" }, "type": "array" } }, "required": [ "plans" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" ] } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_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/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", "enum": [ "production", "preview", "development" ] } }, "makeEnvVarsSensitive": { "type": "boolean" } } } } } } } }, "/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 } } } } } }, "/v1/installations/{integrationConfigurationId}/account": { "get": { "description": "Fetches the best account or user’s contact info", "operationId": "get-account-info", "security": [ { "bearerToken": [] } ], "summary": "Get Account Information", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "name": { "type": "string", "description": "The name of the team the installation is tied to." }, "url": { "type": "string", "description": "A URL linking to the installation in the Vercel Dashboard." }, "contact": { "nullable": true, "properties": { "email": { "type": "string" }, "name": { "type": "string" } }, "required": [ "email" ], "type": "object", "description": "The best contact for the integration, which can change as team members and their roles change." } }, "required": [ "contact", "url" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ] } }, "/v1/installations/{integrationConfigurationId}/member/{memberId}": { "get": { "description": "Returns the member role and other information for a given member ID (\"user_id\" claim in the SSO OIDC token).", "operationId": "get-member", "security": [ { "bearerToken": [] } ], "summary": "Get Member Information", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string" }, "role": { "type": "string", "enum": [ "ADMIN", "USER" ], "description": "\"The `ADMIN` role, by default, is provided to users capable of installing integrations, while the `USER` role can be granted to Vercel users with the Vercel `Billing` or Vercel `Viewer` role, which are considered to be Read-Only roles.\"" }, "globalUserId": { "type": "string" }, "userEmail": { "type": "string" } }, "required": [ "id", "role" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "memberId", "in": "path", "required": true, "schema": { "type": "string" } } ] } }, "/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 } } }, "/v1/installations/{integrationConfigurationId}/resources": { "get": { "description": "Get all resources for a given installation ID.", "operationId": "get-integration-resources", "security": [ { "bearerToken": [] } ], "summary": "Get Integration Resources", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "resources": { "items": { "properties": { "partnerId": { "type": "string", "description": "The ID provided by the partner for the given resource" }, "internalId": { "type": "string", "description": "The ID assigned by Vercel for the given resource" }, "name": { "type": "string", "description": "The name of the resource as it is recorded in Vercel" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The current status of the resource" }, "productId": { "type": "string", "description": "The ID of the product the resource is derived from" }, "protocolSettings": { "properties": { "experimentation": { "properties": { "edgeConfigSyncingEnabled": { "type": "boolean", "enum": [ false, true ] }, "edgeConfigId": { "type": "string" }, "globalConfigId": { "type": "string" }, "globalConfigSyncingEnabled": { "type": "boolean", "enum": [ false, true ] }, "edgeConfigTokenId": { "type": "string" } }, "type": "object" } }, "type": "object", "description": "Any settings provided for the resource to support its product's protocols" }, "notification": { "properties": { "level": { "type": "string", "enum": [ "error", "info", "warn" ] }, "title": { "type": "string" }, "message": { "type": "string" }, "href": { "type": "string" } }, "required": [ "level", "title" ], "type": "object", "description": "The notification, if set, displayed to the user when viewing the resource in Vercel" }, "billingPlanId": { "type": "string", "description": "The ID of the billing plan the resource is subscribed to, if applicable" }, "metadata": { "additionalProperties": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "items": { "type": "string" }, "type": "array", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" }, { "items": { "type": "number" }, "type": "array", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" }, { "type": "boolean", "enum": [ false, true ] } ] }, "type": "object", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" } }, "required": [ "internalId", "name", "partnerId", "productId" ], "type": "object" }, "type": "array" } }, "required": [ "resources" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } } ] } }, "/v1/installations/{integrationConfigurationId}/resources/{resourceId}": { "get": { "description": "Get a resource by its partner ID.", "operationId": "get-integration-resource", "security": [ { "bearerToken": [] } ], "summary": "Get Integration Resource", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "id": { "type": "string", "description": "The ID provided by the 3rd party provider for the given resource" }, "internalId": { "type": "string", "description": "The ID assigned by Vercel for the given resource" }, "name": { "type": "string", "description": "The name of the resource as it is recorded in Vercel" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The current status of the resource" }, "productId": { "type": "string", "description": "The ID of the product the resource is derived from" }, "protocolSettings": { "properties": { "experimentation": { "properties": { "edgeConfigId": { "type": "string" }, "globalConfigId": { "type": "string" } }, "type": "object" } }, "type": "object", "description": "Any settings provided for the resource to support its product's protocols" }, "notification": { "properties": { "level": { "type": "string", "enum": [ "error", "info", "warn" ] }, "title": { "type": "string" }, "message": { "type": "string" }, "href": { "type": "string" } }, "required": [ "level", "title" ], "type": "object", "description": "The notification, if set, displayed to the user when viewing the resource in Vercel" }, "billingPlanId": { "type": "string", "description": "The ID of the billing plan the resource is subscribed to, if applicable" }, "metadata": { "additionalProperties": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "items": { "type": "string" }, "type": "array", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" }, { "items": { "type": "number" }, "type": "array", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" }, { "type": "boolean", "enum": [ false, true ] } ] }, "type": "object", "description": "The configured metadata for the resource as defined by its product's Metadata Schema" } }, "required": [ "id", "internalId", "name", "productId" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] }, "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" } } ] }, "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": "" }, "429": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "resourceId", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "required": [ "productId", "name", "status" ], "properties": { "ownership": { "type": "string", "enum": [ "owned", "linked", "sandbox" ] }, "productId": { "type": "string" }, "name": { "type": "string" }, "status": { "type": "string", "enum": [ "ready", "pending", "onboarding", "suspended", "resumed", "uninstalled", "error" ] }, "metadata": { "type": "object", "additionalProperties": true }, "billingPlan": { "type": "object", "required": [ "id", "type", "name" ], "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "prepayment", "subscription" ] }, "name": { "type": "string" }, "description": { "type": "string" }, "paymentMethodRequired": { "type": "boolean" }, "cost": { "type": "string" }, "details": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "additionalProperties": false } }, "highlightedDetails": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "label" ], "additionalProperties": false } }, "effectiveDate": { "type": "string" } }, "additionalProperties": true }, "notification": { "type": "object", "required": [ "level", "title" ], "properties": { "level": { "type": "string", "enum": [ "info", "warn", "error" ] }, "title": { "type": "string" }, "message": { "type": "string" }, "href": { "type": "string", "format": "uri", "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 } } }, "additionalProperties": false } } } } }, "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 } ] } }, "additionalProperties": false } } } } } }, "/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 } } }, "/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 } } }, "/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" } } ] } }, "/v1/installations/{integrationConfigurationId}/billing/invoices/{invoiceId}": { "get": { "description": "Get Invoice details and status for a given invoice ID.

See [Billing Events with Webhooks documentation](https://vercel.com/docs/integrations/create-integration/marketplace-api#working-with-billing-events-through-webhooks) on how to receive invoice events. This endpoint is used to retrieve the invoice details.", "operationId": "get-invoice", "security": [ { "bearerToken": [] } ], "summary": "Get Invoice", "tags": [ "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "test": { "type": "boolean", "enum": [ false, true ], "description": "Whether the invoice is in the testmode (no real transaction created)." }, "invoiceId": { "type": "string", "description": "Vercel Marketplace Invoice ID." }, "externalId": { "type": "string", "description": "Partner-supplied Invoice ID, if applicable." }, "state": { "type": "string", "enum": [ "draft", "invoiced", "notpaid", "overdue", "paid", "pending", "refund_requested", "refunded", "scheduled" ], "description": "Invoice state." }, "invoiceNumber": { "type": "string", "description": "User-readable invoice number." }, "invoiceDate": { "type": "string", "description": "Invoice date. ISO 8601 timestamp." }, "period": { "properties": { "start": { "type": "string" }, "end": { "type": "string" } }, "required": [ "end", "start" ], "type": "object", "description": "Subscription period for this billing cycle. ISO 8601 timestamps." }, "paidAt": { "type": "string", "description": "Moment the invoice was paid. ISO 8601 timestamp." }, "refundedAt": { "type": "string", "description": "Most recent moment the invoice was refunded. ISO 8601 timestamp." }, "memo": { "type": "string", "description": "Additional memo for the invoice." }, "items": { "items": { "properties": { "billingPlanId": { "type": "string", "description": "Partner's billing plan ID." }, "resourceId": { "type": "string", "description": "Partner's resource ID. If not specified, indicates installation-wide item." }, "start": { "type": "string", "description": "Start and end are only needed if different from the period's start/end. ISO 8601 timestamp." }, "end": { "type": "string", "description": "Start and end are only needed if different from the period's start/end. ISO 8601 timestamp." }, "name": { "type": "string", "description": "Invoice item name." }, "details": { "type": "string", "description": "Additional item details." }, "price": { "type": "string", "description": "Item price. A dollar-based decimal string." }, "quantity": { "type": "number", "description": "Item quantity." }, "units": { "type": "string", "description": "Units for item's quantity." }, "total": { "type": "string", "description": "Item total. A dollar-based decimal string." } }, "required": [ "billingPlanId", "name", "price", "quantity", "total", "units" ], "type": "object", "description": "Invoice items." }, "type": "array", "description": "Invoice items." }, "discounts": { "items": { "properties": { "billingPlanId": { "type": "string", "description": "Partner's billing plan ID." }, "resourceId": { "type": "string", "description": "Partner's resource ID. If not specified, indicates installation-wide discount." }, "start": { "type": "string", "description": "Start and end are only needed if different from the period's start/end. ISO 8601 timestamp." }, "end": { "type": "string", "description": "Start and end are only needed if different from the period's start/end. ISO 8601 timestamp." }, "name": { "type": "string", "description": "Discount name." }, "details": { "type": "string", "description": "Additional discount details." }, "amount": { "type": "string", "description": "Discount amount. A dollar-based decimal string." } }, "required": [ "amount", "billingPlanId", "name" ], "type": "object", "description": "Invoice discounts." }, "type": "array", "description": "Invoice discounts." }, "total": { "type": "string", "description": "Invoice total amount. A dollar-based decimal string." }, "refundReason": { "type": "string", "description": "The reason for refund. Only applicable for states \"refunded\" or \"refund_request\"." }, "refundTotal": { "type": "string", "description": "Refund amount. Only applicable for states \"refunded\" or \"refund_request\". A dollar-based decimal string." }, "created": { "type": "string", "description": "System creation date. ISO 8601 timestamp." }, "updated": { "type": "string", "description": "System update date. ISO 8601 timestamp." } }, "required": [ "created", "invoiceDate", "invoiceId", "items", "period", "state", "total", "updated" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" }, "429": { "description": "" } }, "parameters": [ { "name": "integrationConfigurationId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "invoiceId", "in": "path", "required": true, "schema": { "type": "string" } } ] } }, "/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 } } }, "/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 } } } } } }, "/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 } } } } } }, "/v1/integrations/configurations": { "get": { "description": "Allows to retrieve all configurations for an authenticated integration. When the `project` view is used, configurations generated for the authorization flow will be filtered out of the results.", "operationId": "getConfigurations", "security": [ { "bearerToken": [] } ], "summary": "Get configurations for the authenticated user or team", "tags": [ "integrations" ], "responses": { "200": { "description": "The list of configurations for the authenticated user", "content": { "application/json": { "schema": { "oneOf": [ { "items": { "properties": { "completedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was installed successfully", "example": 1558531915505 }, "createdAt": { "type": "number", "description": "A timestamp that tells you when the configuration was created", "example": 1558531915505 }, "id": { "type": "string", "description": "The unique identifier of the configuration", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "integrationId": { "type": "string", "description": "The unique identifier of the app the configuration was created for", "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" }, "ownerId": { "type": "string", "description": "The user or team ID that owns the configuration", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "projects": { "items": { "type": "string" }, "type": "array", "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", "example": [ "prj_xQxbutw1HpL6HLYPAzt5h75m8NjO" ] }, "source": { "type": "string", "enum": [ "backoffice", "cli", "deploy-button", "external", "import-recommended-integrations", "marketplace", "oauth", "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" }, "slug": { "type": "string", "description": "The slug of the integration the configuration is created for.", "example": "slack" }, "teamId": { "nullable": true, "type": "string", "description": "When the configuration was created for a team, this will show the ID of the team.", "example": "team_nLlpyC6RE1qxydlFKbrxDlud" }, "type": { "type": "string", "enum": [ "integration-configuration" ] }, "updatedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was updated.", "example": 1558531915505 }, "userId": { "type": "string", "description": "The ID of the user that created the configuration.", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "scopes": { "items": { "type": "string" }, "type": "array", "description": "The resources that are allowed to be accessed by the configuration.", "example": [ "read:project", "read-write:log-drain" ] }, "disabledAt": { "type": "number", "description": "A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.", "example": 1558531915505 }, "deletedAt": { "nullable": true, "type": "number", "description": "A timestamp that tells you when the configuration was deleted.", "example": 1558531915505 }, "deleteRequestedAt": { "nullable": true, "type": "number", "description": "A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.", "example": 1558531915505 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "original-owner-left-the-team", "original-owner-role-downgraded" ] }, "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'" } }, "type": "object", "description": "The list of configurations for the authenticated user" }, "type": "array", "description": "The list of configurations for the authenticated user" }, { "items": { "properties": { "integration": { "properties": { "name": { "type": "string" }, "icon": { "type": "string" }, "isLegacy": { "type": "boolean", "enum": [ false, true ] }, "flags": { "items": { "type": "string" }, "type": "array" }, "assignedBetaLabelAt": { "type": "number" }, "tagIds": { "items": { "type": "string", "enum": [ "tag_agents", "tag_ai", "tag_analytics", "tag_authentication", "tag_cms", "tag_code_repository", "tag_code_review", "tag_code_security", "tag_code_testing", "tag_commerce", "tag_databases", "tag_dev_tools", "tag_experimentation", "tag_flags", "tag_logging", "tag_messaging", "tag_monitoring", "tag_observability", "tag_payments", "tag_performance", "tag_productivity", "tag_searching", "tag_security", "tag_support_agent", "tag_testing", "tag_video", "tag_web_automation", "tag_workflow" ] }, "type": "array" } }, "required": [ "icon", "isLegacy", "name" ], "type": "object" }, "completedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was installed successfully", "example": 1558531915505 }, "createdAt": { "type": "number", "description": "A timestamp that tells you when the configuration was created", "example": 1558531915505 }, "id": { "type": "string", "description": "The unique identifier of the configuration", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "integrationId": { "type": "string", "description": "The unique identifier of the app the configuration was created for", "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" }, "ownerId": { "type": "string", "description": "The user or team ID that owns the configuration", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "projects": { "items": { "type": "string" }, "type": "array", "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", "example": [ "prj_xQxbutw1HpL6HLYPAzt5h75m8NjO" ] }, "source": { "type": "string", "enum": [ "backoffice", "cli", "deploy-button", "external", "import-recommended-integrations", "marketplace", "oauth", "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" }, "slug": { "type": "string", "description": "The slug of the integration the configuration is created for.", "example": "slack" }, "teamId": { "nullable": true, "type": "string", "description": "When the configuration was created for a team, this will show the ID of the team.", "example": "team_nLlpyC6RE1qxydlFKbrxDlud" }, "type": { "type": "string", "enum": [ "integration-configuration" ] }, "updatedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was updated.", "example": 1558531915505 }, "userId": { "type": "string", "description": "The ID of the user that created the configuration.", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "scopes": { "items": { "type": "string" }, "type": "array", "description": "The resources that are allowed to be accessed by the configuration.", "example": [ "read:project", "read-write:log-drain" ] }, "disabledAt": { "type": "number", "description": "A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.", "example": 1558531915505 }, "deletedAt": { "nullable": true, "type": "number", "description": "A timestamp that tells you when the configuration was deleted.", "example": 1558531915505 }, "deleteRequestedAt": { "nullable": true, "type": "number", "description": "A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.", "example": 1558531915505 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "original-owner-left-the-team", "original-owner-role-downgraded" ] }, "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'" } }, "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." }, "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 } }, "/v1/integrations/configuration/{id}": { "get": { "description": "Allows to retrieve a the configuration with the provided id in case it exists. The authenticated user or team must be the owner of the config in order to access it.", "operationId": "getConfiguration", "security": [ { "bearerToken": [] } ], "summary": "Retrieve an integration configuration", "tags": [ "integrations" ], "responses": { "200": { "description": "The configuration with the provided id", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "projectSelection": { "type": "string", "enum": [ "all", "selected" ], "description": "A string representing the permission for projects. Possible values are `all` or `selected`.", "example": "all" }, "notification": { "properties": { "level": { "type": "string", "enum": [ "error", "info", "warn" ] }, "title": { "type": "string" }, "message": { "type": "string" }, "href": { "type": "string" } }, "required": [ "level", "title" ], "type": "object" }, "transferRequest": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "transfer-to-marketplace" ] }, "metadata": { "additionalProperties": true, "type": "object" }, "billingPlan": { "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "prepayment", "subscription" ] }, "scope": { "type": "string", "enum": [ "installation", "resource" ] }, "name": { "type": "string" }, "description": { "type": "string" }, "paymentMethodRequired": { "type": "boolean", "enum": [ false, true ] }, "preauthorizationAmount": { "type": "number" } }, "required": [ "description", "id", "name", "type" ], "type": "object" }, "requestId": { "type": "string" }, "transferId": { "type": "string" }, "requester": { "properties": { "name": { "type": "string" }, "email": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "createdAt": { "type": "number" }, "expiresAt": { "type": "number" }, "discardedAt": { "type": "number" }, "discardedBy": { "type": "string" }, "approvedAt": { "type": "number" }, "approvedBy": { "type": "string" }, "authorizationId": { "type": "string" } }, "required": [ "createdAt", "expiresAt", "kind", "requestId", "requester", "transferId" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "transfer-from-marketplace" ] }, "requestId": { "type": "string" }, "transferId": { "type": "string" }, "requester": { "properties": { "name": { "type": "string" }, "email": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "createdAt": { "type": "number" }, "expiresAt": { "type": "number" }, "discardedAt": { "type": "number" }, "discardedBy": { "type": "string" }, "approvedAt": { "type": "number" }, "approvedBy": { "type": "string" }, "authorizationId": { "type": "string" } }, "required": [ "createdAt", "expiresAt", "kind", "requestId", "requester", "transferId" ], "type": "object" } ] }, "projects": { "items": { "type": "string" }, "type": "array", "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", "example": [ "prj_xQxbutw1HpL6HLYPAzt5h75m8NjO" ] }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "type": { "type": "string", "enum": [ "integration-configuration" ] }, "id": { "type": "string", "description": "The unique identifier of the configuration", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "integrationId": { "type": "string", "description": "The unique identifier of the app the configuration was created for", "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" }, "userId": { "type": "string", "description": "The ID of the user that created the configuration.", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "ownerId": { "type": "string", "description": "The user or team ID that owns the configuration", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "createdAt": { "type": "number", "description": "A timestamp that tells you when the configuration was created", "example": 1558531915505 }, "updatedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was updated.", "example": 1558531915505 }, "deletedAt": { "nullable": true, "type": "number", "description": "A timestamp that tells you when the configuration was deleted.", "example": 1558531915505 }, "canConfigureOpenTelemetry": { "type": "boolean", "enum": [ false, true ] }, "completedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was installed successfully", "example": 1558531915505 }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "source": { "type": "string", "enum": [ "backoffice", "cli", "deploy-button", "external", "import-recommended-integrations", "marketplace", "oauth", "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" }, "slug": { "type": "string", "description": "The slug of the integration the configuration is created for.", "example": "slack" }, "teamId": { "nullable": true, "type": "string", "description": "When the configuration was created for a team, this will show the ID of the team.", "example": "team_nLlpyC6RE1qxydlFKbrxDlud" }, "scopes": { "items": { "type": "string" }, "type": "array", "description": "The resources that are allowed to be accessed by the configuration.", "example": [ "read:project", "read-write:log-drain" ] }, "disabledAt": { "type": "number", "description": "A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.", "example": 1558531915505 }, "deleteRequestedAt": { "nullable": true, "type": "number", "description": "A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.", "example": 1558531915505 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "original-owner-left-the-team", "original-owner-role-downgraded" ] }, "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'" } }, "required": [ "createdAt", "id", "integrationId", "notification", "ownerId", "projectSelection", "scopes", "slug", "transferRequest", "type", "updatedAt", "userId" ], "type": "object" }, { "properties": { "completedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was installed successfully", "example": 1558531915505 }, "createdAt": { "type": "number", "description": "A timestamp that tells you when the configuration was created", "example": 1558531915505 }, "id": { "type": "string", "description": "The unique identifier of the configuration", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "integrationId": { "type": "string", "description": "The unique identifier of the app the configuration was created for", "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" }, "ownerId": { "type": "string", "description": "The user or team ID that owns the configuration", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "projects": { "items": { "type": "string" }, "type": "array", "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", "example": [ "prj_xQxbutw1HpL6HLYPAzt5h75m8NjO" ] }, "source": { "type": "string", "enum": [ "backoffice", "cli", "deploy-button", "external", "import-recommended-integrations", "marketplace", "oauth", "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" }, "slug": { "type": "string", "description": "The slug of the integration the configuration is created for.", "example": "slack" }, "teamId": { "nullable": true, "type": "string", "description": "When the configuration was created for a team, this will show the ID of the team.", "example": "team_nLlpyC6RE1qxydlFKbrxDlud" }, "type": { "type": "string", "enum": [ "integration-configuration" ] }, "updatedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was updated.", "example": 1558531915505 }, "userId": { "type": "string", "description": "The ID of the user that created the configuration.", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "scopes": { "items": { "type": "string" }, "type": "array", "description": "The resources that are allowed to be accessed by the configuration.", "example": [ "read:project", "read-write:log-drain" ] }, "disabledAt": { "type": "number", "description": "A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.", "example": 1558531915505 }, "deletedAt": { "nullable": true, "type": "number", "description": "A timestamp that tells you when the configuration was deleted.", "example": 1558531915505 }, "deleteRequestedAt": { "nullable": true, "type": "number", "description": "A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.", "example": 1558531915505 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "original-owner-left-the-team", "original-owner-role-downgraded" ] }, "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'" } }, "required": [ "createdAt", "id", "integrationId", "ownerId", "scopes", "slug", "type", "updatedAt", "userId" ], "type": "object", "description": "The configuration with the provided id" }, { "properties": { "completedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was installed successfully", "example": 1558531915505 }, "createdAt": { "type": "number", "description": "A timestamp that tells you when the configuration was created", "example": 1558531915505 }, "id": { "type": "string", "description": "The unique identifier of the configuration", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "integrationId": { "type": "string", "description": "The unique identifier of the app the configuration was created for", "example": "oac_xzpVzcUOgcB1nrVlirtKhbWV" }, "ownerId": { "type": "string", "description": "The user or team ID that owns the configuration", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "status": { "type": "string", "enum": [ "error", "onboarding", "pending", "ready", "resumed", "suspended", "uninstalled" ], "description": "The configuration status. Optional. If not defined, assume 'ready'." }, "externalId": { "type": "string", "description": "An external identifier defined by the integration vendor." }, "projects": { "items": { "type": "string" }, "type": "array", "description": "When a configuration is limited to access certain projects, this will contain each of the project ID it is allowed to access. If it is not defined, the configuration has full access.", "example": [ "prj_xQxbutw1HpL6HLYPAzt5h75m8NjO" ] }, "source": { "type": "string", "enum": [ "backoffice", "cli", "deploy-button", "external", "import-recommended-integrations", "marketplace", "oauth", "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" }, "slug": { "type": "string", "description": "The slug of the integration the configuration is created for.", "example": "slack" }, "teamId": { "nullable": true, "type": "string", "description": "When the configuration was created for a team, this will show the ID of the team.", "example": "team_nLlpyC6RE1qxydlFKbrxDlud" }, "type": { "type": "string", "enum": [ "integration-configuration" ] }, "updatedAt": { "type": "number", "description": "A timestamp that tells you when the configuration was updated.", "example": 1558531915505 }, "userId": { "type": "string", "description": "The ID of the user that created the configuration.", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "scopes": { "items": { "type": "string" }, "type": "array", "description": "The resources that are allowed to be accessed by the configuration.", "example": [ "read:project", "read-write:log-drain" ] }, "disabledAt": { "type": "number", "description": "A timestamp that tells you when the configuration was disabled. Note: Configurations can be disabled when the associated user loses access to a team. They do not function during this time until the configuration is 'transferred', meaning the associated user is changed to one with access to the team.", "example": 1558531915505 }, "deletedAt": { "nullable": true, "type": "number", "description": "A timestamp that tells you when the configuration was deleted.", "example": 1558531915505 }, "deleteRequestedAt": { "nullable": true, "type": "number", "description": "A timestamp that tells you when the configuration deletion has been started for cases when the deletion needs to be settled/approved by partners, such as when marketplace invoices have been paid.", "example": 1558531915505 }, "customerDeleteRequestedAt": { "nullable": true, "type": "number", "description": "Record when the customer initited deletion, independent of whether `deleteRequestedAt` gets set." }, "disabledReason": { "type": "string", "enum": [ "account-plan-downgrade", "disabled-by-admin", "disabled-by-owner", "feature-not-available", "original-owner-left-the-team", "original-owner-role-downgraded" ] }, "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'" } }, "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" } } ] }, "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" } } ] } }, "/v1/integrations/configuration/{id}/products": { "get": { "description": "Returns products available for an integration configuration. Each product includes a `metadataSchema` field with the JSON Schema for required and optional metadata fields.", "operationId": "getConfigurationProducts", "security": [ { "bearerToken": [] } ], "summary": "List products for integration configuration", "tags": [ "integrations" ], "responses": { "200": { "description": "List of products available for this integration configuration", "content": { "application/json": { "schema": { "properties": { "products": { "items": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "protocols": { "properties": { "storage": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] }, "repl": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ] }, "supportsReadOnlyMode": { "type": "boolean", "enum": [ false, true ] }, "welcomeMessage": { "type": "string" } }, "required": [ "enabled", "supportsReadOnlyMode" ], "type": "object" } }, "required": [ "status" ], "type": "object" }, "experimentation": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] }, "edgeConfigSyncingSupport": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "status" ], "type": "object" }, "ai": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "authentication": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "observability": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "video": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "workflow": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "checks": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "logDrain": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "format": { "type": "string", "enum": [ "json", "ndjson" ] } }, "required": [ "endpoint", "format", "status" ], "type": "object" }, "traceDrain": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] }, "endpoint": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "format": { "type": "string", "enum": [ "json", "proto" ] } }, "required": [ "endpoint", "format", "status" ], "type": "object" }, "messaging": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" }, "other": { "properties": { "status": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "required": [ "status" ], "type": "object" } }, "type": "object" }, "primaryProtocol": { "type": "string", "enum": [ "ai", "authentication", "checks", "experimentation", "logDrain", "messaging", "observability", "other", "storage", "traceDrain", "video", "workflow" ] }, "metadataSchema": { "properties": { "type": { "type": "string", "enum": [ "object" ] }, "properties": { "additionalProperties": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "input" ] }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "number" ] }, "ui:control": { "type": "string", "enum": [ "input" ] }, "minimum": { "type": "number" }, "maximum": { "type": "number" }, "description": { "type": "string" }, "default": { "type": "number" }, "exclusiveMaximum": { "type": "number" }, "exclusiveMinimum": { "type": "number" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "boolean" ] }, "ui:control": { "type": "string", "enum": [ "toggle" ] }, "description": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "array" ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "number" ] }, "minimum": { "type": "number" }, "maximum": { "type": "number" }, "description": { "type": "string" }, "default": { "type": "number" }, "exclusiveMaximum": { "type": "number" }, "exclusiveMinimum": { "type": "number" } }, "required": [ "type" ], "type": "object" }, "ui:control": { "type": "string", "enum": [ "slider" ] }, "ui:steps": { "items": { "type": "number" }, "type": "array" }, "description": { "type": "string" }, "default": { "items": { "type": "number" }, "type": "array" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "items", "type", "ui:control", "ui:steps" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "select" ] }, "ui:options": { "items": { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "radio-button" ] }, "ui:options": { "items": { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "array" ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" } }, "required": [ "type" ], "type": "object" }, "ui:control": { "type": "string", "enum": [ "multi-select" ] }, "ui:options": { "items": { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, "type": "array" }, "description": { "type": "string" }, "default": { "items": { "type": "string" }, "type": "array" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "example": { "items": { "type": "string" }, "type": "array" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "items", "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "vercel-region" ] }, "ui:options": { "items": { "oneOf": [ { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, { "type": "string" }, { "properties": { "value": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "array" ] }, "items": { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" } }, "required": [ "type" ], "type": "object" }, "ui:control": { "type": "string", "enum": [ "multi-vercel-region" ] }, "ui:options": { "items": { "oneOf": [ { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, { "type": "string" }, { "properties": { "value": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" }, "description": { "type": "string" }, "default": { "items": { "type": "string" }, "type": "array" }, "maxItems": { "type": "number" }, "minItems": { "type": "number" }, "example": { "items": { "type": "string" }, "type": "array" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "items", "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "vercel-country" ] }, "ui:options": { "items": { "oneOf": [ { "properties": { "value": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "label", "value" ], "type": "object" }, { "type": "string" }, { "properties": { "value": { "type": "string" }, "description": { "type": "string" }, "disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] } }, "required": [ "value" ], "type": "object" } ] }, "type": "array" }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control", "ui:options" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "domain" ] }, "description": { "type": "string" }, "default": { "type": "string" }, "enum": { "items": { "type": "string" }, "type": "array" }, "maxLength": { "type": "number" }, "minLength": { "type": "number" }, "pattern": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" } }, "required": [ "type", "ui:control" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "string" ] }, "ui:control": { "type": "string", "enum": [ "git-namespace" ] }, "description": { "type": "string" }, "ui:label": { "type": "string" }, "ui:read-only": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:hidden": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:disabled": { "oneOf": [ { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] }, { "type": "string", "enum": [ "create", "update" ] } ] }, "ui:description": { "oneOf": [ { "type": "string" }, { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" } ] }, "ui:formatted-value": { "properties": { "expr": { "type": "string" } }, "required": [ "expr" ], "type": "object" }, "ui:paid-only": { "type": "boolean", "enum": [ false, true ] }, "ui:placeholder": { "type": "string" }, "git:providers": { "items": { "type": "string", "enum": [ "bitbucket", "github", "gitlab" ] }, "type": "array" } }, "required": [ "type", "ui:control" ], "type": "object" } ] }, "type": "object" }, "required": { "items": { "type": "string" }, "type": "array" }, "ui:order": { "items": { "type": "string" }, "type": "array" } }, "required": [ "properties", "type" ], "type": "object" } }, "required": [ "id", "metadataSchema", "name", "protocols", "slug" ], "type": "object" }, "type": "array" }, "integration": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name", "slug" ], "type": "object" }, "configuration": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "configuration", "integration", "products" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] } }, "/v1/integrations/sso/token": { "post": { "description": "During the autorization process, Vercel sends the user to the provider [redirectLoginUrl](https://vercel.com/docs/integrations/create-integration/submit-integration#redirect-login-url), that includes the OAuth authorization `code` parameter. The provider then calls the SSO Token Exchange endpoint with the sent code and receives the OIDC token. They log the user in based on this token and redirects the user back to the Vercel account using deep-link parameters included the redirectLoginUrl. Providers should not persist the returned `id_token` in a database since the token will expire. See [**Authentication with SSO**](https://vercel.com/docs/integrations/create-integration/marketplace-api#authentication-with-sso) for more details.", "operationId": "exchange-sso-token", "security": [], "summary": "SSO Token Exchange", "tags": [ "authentication", "marketplace" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "properties": { "id_token": { "type": "string" }, "token_type": { "nullable": true, "type": "string" }, "expires_in": { "type": "number" }, "access_token": { "nullable": true, "type": "string" }, "refresh_token": { "type": "string" } }, "required": [ "access_token", "id_token", "token_type" ], "type": "object" }, { "properties": { "id_token": { "type": "string" }, "token_type": { "type": "string" }, "access_token": { "type": "string" }, "refresh_token": { "type": "string" }, "expires_in": { "type": "number" } }, "required": [ "access_token", "expires_in", "id_token", "refresh_token", "token_type" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "403": { "description": "" }, "500": { "description": "" } }, "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "oneOf": [ { "type": "object", "required": [ "code", "client_id", "client_secret", "grant_type" ], "properties": { "code": { "type": "string", "description": "The sensitive code received from Vercel" }, "state": { "type": "string", "description": "The state received from the initialization request" }, "client_id": { "type": "string", "description": "The integration client id" }, "client_secret": { "type": "string", "description": "The integration client secret" }, "redirect_uri": { "type": "string", "description": "The integration redirect URI" }, "grant_type": { "type": "string", "description": "The grant type, when using x-www-form-urlencoded content type", "enum": [ "authorization_code" ] } } }, { "type": "object", "required": [ "refresh_token", "client_id", "client_secret", "grant_type" ], "properties": { "refresh_token": { "type": "string", "description": "The refresh token received from previous token exchange" }, "client_id": { "type": "string", "description": "The integration client id" }, "client_secret": { "type": "string", "description": "The integration client secret" }, "grant_type": { "type": "string", "description": "The grant type, when using x-www-form-urlencoded content type", "enum": [ "refresh_token" ] } } } ] } } }, "required": true } } }, "/v2/integrations/log-drains": { "get": { "description": "Retrieves a list of all Integration log drains that are defined for the authenticated user or team. When using an OAuth2 token, the list is limited to log drains created by the authenticated integration.", "operationId": "getIntegrationLogDrains", "security": [ { "bearerToken": [] } ], "summary": "Retrieves a list of Integration log drains (deprecated)", "tags": [ "logDrains" ], "responses": { "200": { "description": "A list of log drains", "content": { "application/json": { "schema": { "items": { "properties": { "clientId": { "type": "string", "description": "The oauth2 client application id that created this log drain", "example": "oac_xRhY4LAB7yLhUADD69EvV7ct" }, "configurationId": { "type": "string", "description": "The client configuration this log drain was created with", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "createdAt": { "type": "number", "description": "A timestamp that tells you when the log drain was created", "example": 1558531915505 }, "id": { "type": "string", "description": "The unique identifier of the log drain. Always prefixed with `ld_`", "example": "ld_nBuA7zCID8g4QZ8g" }, "deliveryFormat": { "type": "string", "enum": [ "json", "ndjson", "protobuf" ], "description": "The delivery log format", "example": "json" }, "name": { "type": "string", "description": "The name of the log drain", "example": "My first log drain" }, "ownerId": { "type": "string", "description": "The identifier of the team or user whose events will trigger the log drain", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "projectId": { "nullable": true, "type": "string", "example": "AbCgVkqoxXeXCDWehVir51LHGrrcWL4mkYm14W6UBPWQeb" }, "projectIds": { "items": { "type": "string" }, "type": "array", "description": "The identifier of the projects this log drain is associated with", "example": "AbCgVkqoxXeXCDWehVir51LHGrrcWL4mkYm14W6UBPWQeb" }, "url": { "type": "string", "description": "The URL to call when logs are generated", "example": "https://example.com/log-drain" }, "sources": { "items": { "type": "string", "enum": [ "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" ] }, "createdFrom": { "type": "string", "enum": [ "integration", "self-served" ], "description": "Whether the log drain was created by an integration or by a user", "example": "integration" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object", "description": "The headers to send with the request", "example": "{\"Authorization\": \"Bearer 123\"}" }, "environments": { "items": { "type": "string", "enum": [ "preview", "production" ], "description": "The environment of log drain", "example": [ "production" ] }, "type": "array", "description": "The environment of log drain", "example": [ "production" ] }, "branch": { "type": "string", "description": "The branch regexp of log drain", "example": "feature/*" }, "samplingRate": { "type": "number", "description": "The sampling rate of log drain", "example": 0.5 }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] } }, "required": [ "createdAt", "id", "name", "ownerId", "source", "url" ], "type": "object" }, "type": "array" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] }, "post": { "description": "Creates an Integration log drain. This endpoint must be called with an OAuth2 client (integration), since log drains are tied to integrations. If it is called with a different token type it will produce a 400 error.", "operationId": "createLogDrain", "security": [ { "bearerToken": [] } ], "summary": "Creates a new Integration Log Drain (deprecated)", "tags": [ "logDrains" ], "responses": { "200": { "description": "The log drain was successfully created", "content": { "application/json": { "schema": { "properties": { "clientId": { "type": "string", "description": "The oauth2 client application id that created this log drain", "example": "oac_xRhY4LAB7yLhUADD69EvV7ct" }, "configurationId": { "type": "string", "description": "The client configuration this log drain was created with", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "createdAt": { "type": "number", "description": "A timestamp that tells you when the log drain was created", "example": 1558531915505 }, "id": { "type": "string", "description": "The unique identifier of the log drain. Always prefixed with `ld_`", "example": "ld_nBuA7zCID8g4QZ8g" }, "deliveryFormat": { "type": "string", "enum": [ "json", "ndjson", "protobuf" ], "description": "The delivery log format", "example": "json" }, "name": { "type": "string", "description": "The name of the log drain", "example": "My first log drain" }, "ownerId": { "type": "string", "description": "The identifier of the team or user whose events will trigger the log drain", "example": "kr1PsOIzqEL5Xg6M4VZcZosf" }, "projectId": { "nullable": true, "type": "string", "example": "AbCgVkqoxXeXCDWehVir51LHGrrcWL4mkYm14W6UBPWQeb" }, "projectIds": { "items": { "type": "string" }, "type": "array", "description": "The identifier of the projects this log drain is associated with", "example": "AbCgVkqoxXeXCDWehVir51LHGrrcWL4mkYm14W6UBPWQeb" }, "url": { "type": "string", "description": "The URL to call when logs are generated", "example": "https://example.com/log-drain" }, "sources": { "items": { "type": "string", "enum": [ "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" ] }, "createdFrom": { "type": "string", "enum": [ "integration", "self-served" ], "description": "Whether the log drain was created by an integration or by a user", "example": "integration" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object", "description": "The headers to send with the request", "example": "{\"Authorization\": \"Bearer 123\"}" }, "environments": { "items": { "type": "string", "enum": [ "preview", "production" ], "description": "The environment of log drain", "example": [ "production" ] }, "type": "array", "description": "The environment of log drain", "example": [ "production" ] }, "branch": { "type": "string", "description": "The branch regexp of log drain", "example": "feature/*" }, "samplingRate": { "type": "number", "description": "The sampling rate of log drain", "example": 0.5 }, "source": { "oneOf": [ { "properties": { "kind": { "type": "string", "enum": [ "self-served" ] } }, "required": [ "kind" ], "type": "object" }, { "properties": { "kind": { "type": "string", "enum": [ "integration" ] }, "resourceId": { "type": "string" }, "externalResourceId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "kind" ], "type": "object" } ] } }, "required": [ "createdAt", "id", "name", "ownerId", "source", "url" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nThe provided token is not from an OAuth2 Client" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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 } } }, "/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" } } ] } }, "/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" ] } } } }, "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 } } } } } } } }, "/v1/projects/{projectId}/deployments/{deploymentId}/runtime-logs": { "get": { "description": "Returns a stream of logs for a given deployment.", "operationId": "getRuntimeLogs", "security": [ { "bearerToken": [] } ], "summary": "Get logs for a deployment", "tags": [ "logs" ], "responses": { "200": { "description": "", "content": { "application/stream+json": { "schema": { "properties": { "level": { "type": "string", "enum": [ "debug", "error", "fatal", "info", "trace", "warning" ] }, "message": { "type": "string" }, "rowId": { "type": "string" }, "source": { "type": "string", "enum": [ "delimiter", "edge-function", "edge-middleware", "request", "serverless" ] }, "timestampInMs": { "type": "number" }, "domain": { "type": "string" }, "messageTruncated": { "type": "boolean", "enum": [ false, true ] }, "requestMethod": { "type": "string" }, "requestPath": { "type": "string" }, "responseStatusCode": { "type": "number" } }, "required": [ "domain", "level", "message", "messageTruncated", "requestMethod", "requestPath", "responseStatusCode", "rowId", "source", "timestampInMs" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] } }, "/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" } }, "/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" }, "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" } }, "/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": { "items": { "additionalProperties": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "type": "object" }, "updatedAt": { "type": "number" }, "digest": { "type": "string" }, "purpose": { "type": "string", "enum": [ "experimentation", "flags" ] } }, "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" } } ] }, "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": { "items": { "additionalProperties": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "type": "object" }, "updatedAt": { "type": "number" }, "digest": { "type": "string" }, "purpose": { "type": "string", "enum": [ "experimentation", "flags" ] } }, "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" } } ] }, "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": { "items": { "additionalProperties": { "$ref": "#/components/schemas/EdgeConfigItemValue" }, "type": "object" }, "updatedAt": { "type": "number" }, "digest": { "type": "string" }, "purpose": { "type": "string", "enum": [ "experimentation", "flags" ] } }, "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": {} } } } } } } } }, "/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." }, "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" } } ] } }, "/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" }, "creator": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "via": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "app", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "required": [ "integration", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object" } ] }, "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": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "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": { "id": { "type": "string" }, "canceledAt": { "nullable": true, "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "paidAt": { "type": "number" }, "sampleRatePercent": { "nullable": true, "type": "number" }, "spendLimitInDollars": { "nullable": true, "type": "number" } }, "required": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "preview", "production" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "crons": { "properties": { "enabledAt": { "type": "number", "description": "The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs." }, "disabledAt": { "nullable": true, "type": "number", "description": "The time the feature was disabled for this project." }, "updatedAt": { "type": "number" }, "deploymentId": { "nullable": true, "type": "string", "description": "The ID of the Deployment from which the definitions originated." }, "definitions": { "items": { "properties": { "host": { "type": "string", "description": "The hostname that should be used.", "example": "vercel.com" }, "path": { "type": "string", "description": "The path that should be called for the cronjob.", "example": "/api/crons/sync-something?hello=world" }, "schedule": { "type": "string", "description": "The cron expression.", "example": "0 0 * * *" }, "source": { "type": "string", "enum": [ "api" ], "description": "The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json)." }, "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "dataCache": { "properties": { "userDisabled": { "type": "boolean", "enum": [ false, true ] }, "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "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" } ] }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "installCommand": { "nullable": true, "type": "string" }, "env": { "items": { "properties": { "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "secret", "sensitive", "system" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "id": { "type": "string" }, "key": { "type": "string" }, "configurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "gitBranch": { "type": "string" }, "visibility": { "type": "string", "enum": [ "config", "secret" ], "description": "User-facing config/secret model. When set, authoritative for new code paths when the env-var-config-secret-ui flag is enabled. Legacy rows omit this field; legacy rows omit it and callers fall back to existing `type` behavior." }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-webhook-public-key" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" } ] }, "internalContentHint": { "nullable": true, "properties": { "type": { "type": "string", "enum": [ "flags-secret" ] }, "encryptedValue": { "type": "string", "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." } }, "required": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "customEnvironments": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." }, "verification": { "items": { "properties": { "type": { "type": "string" }, "domain": { "type": "string" }, "value": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "domain", "reason", "type", "value" ], "type": "object", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." }, "type": "array", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." } }, "required": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "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 ] }, "services": { "items": { "properties": { "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." }, "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", "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." } }, "required": [ "serviceName" ], "type": "object" }, "type": "array" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "jobs": { "properties": { "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "typecheck": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "mfe-config-present": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" } }, "type": "object" }, "latestDeployments": { "items": { "properties": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "array" }, "link": { "oneOf": [ { "properties": { "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "createdAt": { "type": "number" }, "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "projectNameWithNamespace": { "type": "string" }, "projectNamespace": { "type": "string" }, "projectOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes. This is the id of the top level group that a namespace belongs to. Gitlab supports group nesting (up to 20 levels)." }, "projectUrl": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "type": "object" }, { "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, "owner": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "uuid": { "type": "string" }, "workspaceUuid": { "type": "string" }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug, e.g. `acme`." }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "ownerId": { "type": "string", "description": "Origin namespace id (`ns_…`) of the owner." }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "owner", "ownerId", "productionBranch", "repo", "repoId", "type" ], "type": "object" } ] }, "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" }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "routeObservabilityToThisProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether observability data should be routed to this microfrontend project or a root project." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "enum": [ false, true ], "description": "Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "optionsAllowlist": { "nullable": true, "properties": { "paths": { "items": { "properties": { "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" } }, "required": [ "paths" ], "type": "object" }, "outputDirectory": { "nullable": true, "type": "string" }, "passwordProtection": { "nullable": true, "type": "object" }, "passport": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] }, "connectorId": { "type": "string" } }, "required": [ "connectorId", "deploymentType" ], "type": "object" }, "protectionConfig": { "properties": { "sandboxUrls": { "properties": { "inheritDeploymentProtection": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" } }, "type": "object" }, "sandbox": { "properties": { "region": { "type": "string", "enum": [ "cle1", "iad1", "sfo1" ] }, "failoverRegions": { "items": { "type": "string", "enum": [ "cle1", "iad1", "sfo1" ] }, "type": "array" } }, "type": "object" }, "productionDeploymentsFastLane": { "type": "boolean", "enum": [ false, true ] }, "resourceConfig": { "properties": { "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "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" ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollbackDescription": { "properties": { "userId": { "type": "string", "description": "The user who rolled back the project." }, "username": { "type": "string", "description": "The username of the user who rolled back the project." }, "description": { "type": "string", "description": "User-supplied explanation of why they rolled back the project. Limited to 250 characters." }, "createdAt": { "type": "number", "description": "Timestamp of when the rollback was requested." } }, "required": [ "createdAt", "description", "userId", "username" ], "type": "object", "description": "Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback." }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "defaultResourceConfig": { "properties": { "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "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" ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "skewProtectionBoundaryAt": { "type": "number" }, "skewProtectionMaxAge": { "type": "number" }, "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "staticIps": { "properties": { "builds": { "type": "boolean", "enum": [ false, true ] }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "regions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "builds", "enabled", "regions" ], "type": "object" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "object" }, "transferCompletedAt": { "type": "number" }, "transferStartedAt": { "type": "number" }, "transferToAccountId": { "type": "string" }, "transferredFromAccountId": { "type": "string" }, "updatedAt": { "type": "number" }, "live": { "type": "boolean", "enum": [ false, true ] }, "enablePreviewFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "enableProductionFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "permissions": { "properties": { "oauth2Connection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "user": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userMfaConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userPreference": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAuthn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "accessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "agent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayApiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayApiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayApiKeyZdrExemption": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayBudget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayCredits": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayPrivateModels": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayGuardrails": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayRules": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewaySettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alerts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alertRules": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "analyticsSampling": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "analyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyAiGateway": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oauth2Application": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallationRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "auditLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingAddress": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInformation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInvoiceEmailRecipient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInvoiceLanguage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingPurchaseOrder": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingRefund": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingTaxId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blob": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blobStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "budget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "cacheArtifact": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "cacheArtifactUsageEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "codeChecks": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "codeOwners": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciInvocations": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "concurrentBuilds": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connect": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connectConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connectLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClientProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachineDefault": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheBillingSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "defaultDeploymentProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainAcceptDelegation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainAuthCodes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainCertificate": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainPurchase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainRecord": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "drain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfigItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfigSchema": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfigToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "endpointVerification": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "fileUpload": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "flagsExplorerSubscription": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "gitRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "imageOptimizationNewPrice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationProjects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationRole": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationDeploymentAction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResource": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceReplCommand": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceSecrets": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationSSOSession": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationVercelConfigurationOverride": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationPullRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ipBlocking": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "jobGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "kmsIssuer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "kmsProjectGrant": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logDrain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceBillingData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationEdgeConfigData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceFlexCommit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInstallationMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "Monitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringChart": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringQuery": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationCustomerBudget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDeploymentFailed": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainExpire": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainMoved": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainPurchase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainRenewal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainUnverified": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "NotificationMonitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationPaymentFailed": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationPreferences": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationStatementOfReasons": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationUsageAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oidcFederationPolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityFunnel": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityNotebook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "openTelemetryEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ownEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organization": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationTeam": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtectionInvoiceItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "paymentMethod": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "permissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "postgres": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "postgresStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "previewDeploymentSuffix": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateCloudAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "proTrialOnboarding": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "rateLimit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redis": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redisStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "remoteCaching": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "repository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "samlConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "secret": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sensitiveEnvironmentVariablePolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVars": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "space": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "spaceRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeIsLocked": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTokenSetSensitive": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "supportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "supportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "team": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamAccessRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamFellowMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamGitExclusivity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamInvite": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamInviteCode": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamInviteLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamJoin": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMemberMfaStatus": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMicrofrontends": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembershipDisconnectSAML": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamTokenInvalidation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "token": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "toolbarComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usageCycle": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vcrRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vpcPeeringConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalyticsPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook-event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "bulkRedirects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachine": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connectConfigurationLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deployment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentBuildLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentCheckPreview": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentCheckReRunFromProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentProductionGit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentV0": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPreview": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPrivate": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPromote": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentRollback": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "environments": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "job": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logsPreset": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandBuild": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandConcurrency": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "optionsAllowlist": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateLinkEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "productionAliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "project": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectAccessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectAnalyticsSampling": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectAnalyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheckRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentExpiration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentHook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentProtectionStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainVerify": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEnvVars": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEnvVarsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEnvVarsUnownedByIntegration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFlags": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFlagsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFlagsSdkKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFromV0": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectIntegrationConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectMonitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectOIDCToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectPermissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRollingRelease": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRoutes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTier": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferOut": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "pageIntegrity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "seawallConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityPlusConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "shareableLinkStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "skewProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "analytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "trustedIps": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "trustedSources": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "v0Chat": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" } }, "type": "object" }, "lastRollbackTarget": { "nullable": true, "type": "object" }, "lastAliasRequest": { "nullable": true, "properties": { "fromDeploymentId": { "nullable": true, "type": "string" }, "toDeploymentId": { "type": "string" }, "fromRollingReleaseId": { "type": "string", "description": "If rolling back from a rolling release, fromDeploymentId captures the \"base\" of that rolling release, and fromRollingReleaseId captures the \"target\" of that rolling release." }, "jobStatus": { "type": "string", "enum": [ "failed", "in-progress", "pending", "skipped", "succeeded" ] }, "requestedAt": { "type": "number" }, "type": { "type": "string", "enum": [ "promote", "rollback" ] } }, "required": [ "fromDeploymentId", "jobStatus", "requestedAt", "toDeploymentId", "type" ], "type": "object" }, "protectionBypass": { "additionalProperties": { "oneOf": [ { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "integration-automation-bypass" ] }, "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "createdAt", "createdBy", "integrationId", "scope" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "automation-bypass" ] }, "isEnvVar": { "type": "boolean", "enum": [ false, true ], "description": "When there was only one bypass, it was automatically set as an env var on deployments. With multiple bypasses, there is always one bypass that is selected as the default, and gets set as an env var on deployments. As this is a new field, undefined means that the bypass is the env var. If there are any automation bypasses, exactly one must be the env var." }, "note": { "type": "string", "description": "Optional note about the bypass to be displayed in the UI" } }, "required": [ "createdAt", "createdBy", "scope" ], "type": "object" } ] }, "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "trustedIps": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", "production" ] }, "addresses": { "items": { "properties": { "value": { "type": "string" }, "note": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "protectionMode": { "type": "string", "enum": [ "additional", "exclusive" ] } }, "required": [ "addresses", "deploymentType", "protectionMode" ], "type": "object" }, { "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", "production" ] } }, "required": [ "deploymentType" ], "type": "object" } ] }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "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`." }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "concurrencyBucketName": { "type": "string" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "attackModeActiveUntil": { "nullable": true, "type": "number" }, "firewallConfigVersion": { "type": "number" }, "rulesets": { "additionalProperties": { "properties": { "action": { "type": "string", "enum": [ "allow", "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "rateLimit": { "nullable": true, "properties": { "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "window": { "type": "number" }, "limit": { "type": "number" }, "keys": { "items": { "type": "string" }, "type": "array" }, "action": { "nullable": true, "type": "string", "enum": [ "challenge", "deny", "log", "rate_limit", null ] } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "redirect": { "nullable": true, "properties": { "location": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "location", "permanent" ], "type": "object" }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action" ], "type": "object" }, "type": "object" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "traffic_sources": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "traffic_sources", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "global", "team" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "deploymentPolicy": { "nullable": true, "properties": { "gitSources": { "nullable": true, "items": { "properties": { "sources": { "items": { "oneOf": [ { "properties": { "provider": { "type": "string", "enum": [ "bitbucket", "github" ] }, "org": { "type": "string" }, "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": { "provider": { "type": "string", "enum": [ "gitlab" ] }, "namespace": { "type": "string" }, "project": { "type": "string" } }, "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" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "system" ] }, "target": { "type": "string", "enum": [ "preview", "production" ] } }, "required": [ "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "environmentId": { "type": "string" } }, "required": [ "environmentId", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "enabled", "environments", "sources" ], "type": "object", "description": "`enabled: true` with empty `sources` is deny-all." }, "type": "array" }, "deploymentSources": { "nullable": true, "items": { "properties": { "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" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "system" ] }, "target": { "type": "string", "enum": [ "preview", "production" ] } }, "required": [ "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "environmentId": { "type": "string" } }, "required": [ "environmentId", "type" ], "type": "object" } ] }, "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." }, "tier": { "type": "string" }, "usageStatus": { "properties": { "kind": { "type": "string", "enum": [ "flat" ], "description": "Billing mode. Always 'flat' for flat-rate projects." }, "exceededAllowanceUntil": { "type": "number", "description": "Timestamp until which the project has exceeded its CDN allowance." }, "bypassThrottleUntil": { "type": "number", "description": "Timestamp until which throttling is bypassed (project pays list rates for overage)." }, "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)." }, "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`." } }, "required": [ "kind" ], "type": "object" }, "features": { "properties": { "webAnalytics": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "v0": { "type": "boolean", "enum": [ false, true ] }, "v0Created": { "type": "boolean", "enum": [ false, true ] }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] }, "interstitialHistory": { "items": { "properties": { "action": { "type": "string", "enum": [ "add-deployment-interstitial", "add-project-interstitial", "remove-deployment-interstitial", "remove-project-interstitial" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "reason": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" } }, "required": [ "action", "createdAt" ], "type": "object" }, "type": "array" } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" }, "hasDeployments": { "type": "boolean", "enum": [ false, true ] }, "dismissedToasts": { "items": { "properties": { "key": { "type": "string" }, "dismissedAt": { "type": "number" }, "action": { "type": "string", "enum": [ "accept", "cancel", "delete" ] }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "previousValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "currentValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "currentValue", "previousValue" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "action", "dismissedAt", "key", "value" ], "type": "object" }, "type": "array" }, "protectedSourcemaps": { "type": "boolean", "enum": [ false, true ] }, "tracing": { "properties": { "domains": { "type": "string" }, "ignorePaths": { "items": { "type": "string" }, "type": "array" }, "samplingRules": { "items": { "properties": { "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" }, "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." } }, "required": [ "rate" ], "type": "object" }, "type": "array" } }, "type": "object" }, "avatar": { "nullable": true, "type": "string" } }, "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." }, "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" } } ] } }, "/v1/microfrontends/{deploymentId}/config": { "get": { "description": "Get the microfrontends config for a deployment.", "operationId": "getMicrofrontendsConfig", "security": [ { "bearerToken": [] } ], "summary": "Get microfrontends config for a deployment", "tags": [ "microfrontends" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "config": { "nullable": true, "properties": { "$schema": { "type": "string", "description": "See https://openapi.vercel.sh/microfrontends.json." }, "version": { "type": "string", "enum": [ "1" ], "description": "The version of the microfrontends config schema." }, "applications": { "additionalProperties": { "oneOf": [ { "properties": { "development": { "properties": { "fallback": { "type": "string", "description": "Fallback for local development, could point to any environment. This is required for the default app. This value is used as the fallback for child apps as well if they do not have a fallback. If passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTPS. If omitted, the port defaults to `80` for HTTP and `443` for HTTPS. See https://vercel.com/docs/microfrontends/local-development." }, "local": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "task": { "type": "string", "description": "The task to run when starting the development server. Should reference a script in the package.json of the application. The default value is \"dev\". See https://vercel.com/docs/microfrontends/local-development." } }, "required": [ "fallback" ], "type": "object", "description": "Development configuration for the default application." }, "packageName": { "type": "string", "description": "The name used to run the application, e.g. the `name` field in the `package.json`. This is used by the local proxy to map the application config to the locally running app. This is only necessary when the application name does not match the `name` used in `package.json`. See https://vercel.com/docs/microfrontends/configuration#application-naming." }, "projectId": { "type": "string" } }, "required": [ "development", "projectId" ], "type": "object" }, { "properties": { "development": { "properties": { "fallback": { "type": "string", "description": "Fallback for local development, could point to any environment. If not provided for child apps, the fallback of the default app will be used. If passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTPS. If omitted, the port defaults to `80` for HTTP and `443` for HTTPS. See https://vercel.com/docs/microfrontends/local-development." }, "local": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "task": { "type": "string", "description": "The task to run when starting the development server. Should reference a script in the package.json of the application. The default value is \"dev\". See https://vercel.com/docs/microfrontends/local-development." } }, "type": "object", "description": "Development configuration for the child application." }, "routing": { "items": { "properties": { "group": { "type": "string", "description": "Group name for the paths." }, "flag": { "type": "string", "description": "The name of the feature flag that controls routing for this group of paths. See https://vercel.com/docs/microfrontends/path-routing#routing-changes-safely-with-flags." }, "paths": { "items": { "type": "string" }, "type": "array", "description": "A list of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing#supported-path-expressions." } }, "required": [ "paths" ], "type": "object", "description": "Groups of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing." }, "type": "array", "description": "Groups of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing." }, "assetPrefix": { "type": "string", "description": "The name of the asset prefix to use instead of the auto-generated name. The asset prefix is used to prefix all paths to static assets, such as JS, CSS, or images that are served by a specific application. It is necessary to ensure there are no conflicts with other applications on the same domain. An auto-generated asset prefix of the form `vc-ap-` is used when this field is not provided. When this field is provided, `/${assetPrefix}/:path*` must also be added to the list of paths in the `routing` field. Changing the asset prefix after a microfrontend application has already been deployed is not a forwards and backwards compatible change, and the asset prefix should be added to the `routing` field and deployed before setting the `assetPrefix` field. The default value is the auto-generated asset prefix of the form `vc-ap-`. See https://vercel.com/docs/microfrontends/path-routing#asset-prefix." }, "packageName": { "type": "string", "description": "The name used to run the application, e.g. the `name` field in the `package.json`. This is used by the local proxy to map the application config to the locally running app. This is only necessary when the application name does not match the `name` used in `package.json`. See https://vercel.com/docs/microfrontends/configuration#application-naming." }, "projectId": { "type": "string" } }, "required": [ "projectId", "routing" ], "type": "object" } ] }, "type": "object" }, "options": { "properties": { "disableOverrides": { "type": "boolean", "enum": [ false, true ], "description": "If you want to disable the overrides for the site. For example, if you are managing rewrites between applications externally, you may wish to disable the overrides on the toolbar as they will have no effect. See https://vercel.com/docs/microfrontends/managing-microfrontends/vercel-toolbar#routing-overrides." }, "localProxyPort": { "type": "number", "description": "The port number used by the local proxy server. The default value is 3024. See https://vercel.com/docs/microfrontends/local-development." } }, "type": "object", "description": "Optional configuration options for the microfrontend." } }, "required": [ "applications" ], "type": "object", "description": "projectIds are added when the config is uploaded to s3 deployment assets." } }, "required": [ "config" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] } }, "/v1/microfrontends/projects/{projectIdOrName}/production-mfe-config": { "get": { "description": "Get the microfrontends config for a project by ID or name.", "operationId": "getMicrofrontendsConfigForProject", "security": [ { "bearerToken": [] } ], "summary": "Get microfrontends config for a project", "tags": [ "microfrontends" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "config": { "nullable": true, "properties": { "$schema": { "type": "string", "description": "See https://openapi.vercel.sh/microfrontends.json." }, "version": { "type": "string", "enum": [ "1" ], "description": "The version of the microfrontends config schema." }, "applications": { "additionalProperties": { "oneOf": [ { "properties": { "development": { "properties": { "fallback": { "type": "string", "description": "Fallback for local development, could point to any environment. This is required for the default app. This value is used as the fallback for child apps as well if they do not have a fallback. If passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTPS. If omitted, the port defaults to `80` for HTTP and `443` for HTTPS. See https://vercel.com/docs/microfrontends/local-development." }, "local": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "task": { "type": "string", "description": "The task to run when starting the development server. Should reference a script in the package.json of the application. The default value is \"dev\". See https://vercel.com/docs/microfrontends/local-development." } }, "required": [ "fallback" ], "type": "object", "description": "Development configuration for the default application." }, "packageName": { "type": "string", "description": "The name used to run the application, e.g. the `name` field in the `package.json`. This is used by the local proxy to map the application config to the locally running app. This is only necessary when the application name does not match the `name` used in `package.json`. See https://vercel.com/docs/microfrontends/configuration#application-naming." }, "projectId": { "type": "string" } }, "required": [ "development", "projectId" ], "type": "object" }, { "properties": { "development": { "properties": { "fallback": { "type": "string", "description": "Fallback for local development, could point to any environment. If not provided for child apps, the fallback of the default app will be used. If passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTPS. If omitted, the port defaults to `80` for HTTP and `443` for HTTPS. See https://vercel.com/docs/microfrontends/local-development." }, "local": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "task": { "type": "string", "description": "The task to run when starting the development server. Should reference a script in the package.json of the application. The default value is \"dev\". See https://vercel.com/docs/microfrontends/local-development." } }, "type": "object", "description": "Development configuration for the child application." }, "routing": { "items": { "properties": { "group": { "type": "string", "description": "Group name for the paths." }, "flag": { "type": "string", "description": "The name of the feature flag that controls routing for this group of paths. See https://vercel.com/docs/microfrontends/path-routing#routing-changes-safely-with-flags." }, "paths": { "items": { "type": "string" }, "type": "array", "description": "A list of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing#supported-path-expressions." } }, "required": [ "paths" ], "type": "object", "description": "Groups of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing." }, "type": "array", "description": "Groups of path expressions that are routed to this application. See https://vercel.com/docs/microfrontends/path-routing." }, "assetPrefix": { "type": "string", "description": "The name of the asset prefix to use instead of the auto-generated name. The asset prefix is used to prefix all paths to static assets, such as JS, CSS, or images that are served by a specific application. It is necessary to ensure there are no conflicts with other applications on the same domain. An auto-generated asset prefix of the form `vc-ap-` is used when this field is not provided. When this field is provided, `/${assetPrefix}/:path*` must also be added to the list of paths in the `routing` field. Changing the asset prefix after a microfrontend application has already been deployed is not a forwards and backwards compatible change, and the asset prefix should be added to the `routing` field and deployed before setting the `assetPrefix` field. The default value is the auto-generated asset prefix of the form `vc-ap-`. See https://vercel.com/docs/microfrontends/path-routing#asset-prefix." }, "packageName": { "type": "string", "description": "The name used to run the application, e.g. the `name` field in the `package.json`. This is used by the local proxy to map the application config to the locally running app. This is only necessary when the application name does not match the `name` used in `package.json`. See https://vercel.com/docs/microfrontends/configuration#application-naming." }, "projectId": { "type": "string" } }, "required": [ "projectId", "routing" ], "type": "object" } ] }, "type": "object" }, "options": { "properties": { "disableOverrides": { "type": "boolean", "enum": [ false, true ], "description": "If you want to disable the overrides for the site. For example, if you are managing rewrites between applications externally, you may wish to disable the overrides on the toolbar as they will have no effect. See https://vercel.com/docs/microfrontends/managing-microfrontends/vercel-toolbar#routing-overrides." }, "localProxyPort": { "type": "number", "description": "The port number used by the local proxy server. The default value is 3024. See https://vercel.com/docs/microfrontends/local-development." } }, "type": "object", "description": "Optional configuration options for the microfrontend." } }, "required": [ "applications" ], "type": "object", "description": "projectIds are added when the config is uploaded to s3 deployment assets." } }, "required": [ "config" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] } }, "/v1/microfrontends/group": { "post": { "description": "Creates a microfrontends group and attaches multiple projects in a single request.", "operationId": "createMicrofrontendsGroupWithApplications", "security": [ { "bearerToken": [] } ], "summary": "Create a microfrontends group with applications", "tags": [ "microfrontends" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "newMicrofrontendsGroup": { "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "fallbackEnvironment": { "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "createdAt", "fallbackEnvironment", "id", "name", "slug", "updatedAt" ], "type": "object" } }, "required": [ "newMicrofrontendsGroup" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } } } } } } } } } }, "/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": { "id": { "type": "string" }, "name": { "type": "string" }, "disabledAt": { "type": "number" } }, "required": [ "disabledAt", "id" ], "type": "object" }, "type": "array" } }, "required": [ "disabledProjects" ], "type": "object" } } } }, "400": { "description": "" }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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/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": { "id": { "type": "string" }, "disabledAt": { "type": "number" } }, "required": [ "id" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } } } } } } }, "/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." }, "408": { "description": "" }, "410": { "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 } } } } } }, "/v2/observability/schema": { "get": { "description": "", "operationId": "getObservabilitySchema", "security": [], "tags": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "metrics": { "items": { "properties": { "id": { "type": "string" }, "description": { "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." }, "410": { "description": "" } }, "parameters": [] } }, "/v2/observability/schema/{metricId}": { "get": { "description": "", "operationId": "getObservabilitySchemaByMetricId", "security": [], "tags": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "items": { "properties": { "id": { "type": "string" }, "description": { "type": "string" }, "dimensions": { "items": { "properties": { "name": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" } }, "required": [ "label", "name" ], "type": "object" }, "type": "array" }, "unit": { "type": "string" }, "aggregations": { "items": { "type": "string" }, "type": "array" }, "defaultAggregation": { "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." }, "410": { "description": "" } }, "parameters": [ { "name": "metricId", "in": "path", "required": true, "schema": { "type": "string" } } ] } }, "/v1/projects/{idOrName}/members": { "get": { "description": "Lists all members of a project.", "operationId": "getProjectMembers", "security": [ { "bearerToken": [] } ], "summary": "List project members", "tags": [ "projectMembers" ], "responses": { "200": { "description": "Paginated list of members for the project.", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "members": { "items": { "properties": { "avatar": { "type": "string", "description": "ID of the file for the Avatar of this member.", "example": "123a6c5209bc3778245d011443644c8d27dc2c50" }, "email": { "type": "string", "description": "The email of this member.", "example": "jane.doe@example.com" }, "role": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ], "description": "Role of this user in the project.", "example": "ADMIN" }, "computedProjectRole": { "type": "string", "enum": [ "ADMIN", "PROJECT_DEVELOPER", "PROJECT_GUEST", "PROJECT_VIEWER" ], "description": "Role of this user in the project.", "example": "ADMIN" }, "uid": { "type": "string", "description": "The ID of this user.", "example": "zTuNVUXEAvvnNN3IaqinkyMw" }, "username": { "type": "string", "description": "The unique username of this user.", "example": "jane-doe" }, "name": { "type": "string", "description": "The name of this user.", "example": "Jane Doe" }, "createdAt": { "type": "number", "description": "Timestamp in milliseconds when this member was added.", "example": 1588720733602 }, "teamRole": { "type": "string", "enum": [ "BILLING", "CONTRIBUTOR", "DEVELOPER", "MEMBER", "OWNER", "SECURITY", "VIEWER", "VIEWER_FOR_PLUS" ], "description": "The role of this user in the team.", "example": "CONTRIBUTOR" } }, "required": [ "computedProjectRole", "createdAt", "email", "role", "teamRole", "uid", "username" ], "type": "object" }, "type": "array" }, "pagination": { "properties": { "hasNext": { "type": "boolean", "enum": [ false, true ] }, "count": { "type": "number", "description": "Amount of items in the current page.", "example": 20 }, "next": { "nullable": true, "type": "number", "description": "Timestamp that must be used to request the next page.", "example": 1540095775951 }, "prev": { "nullable": true, "type": "number", "description": "Timestamp that must be used to request the previous page.", "example": 1540095775951 } }, "required": [ "count", "hasNext", "next", "prev" ], "type": "object" } }, "required": [ "members", "pagination" ], "type": "object", "description": "Paginated list of members for the project." } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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 }, "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." }, "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 } } }, "/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." }, "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" } } ] } }, "/v1/projects/{projectId}/routes": { "get": { "description": "Get the routing rules for a project. Supports searching by name/ID/pattern, filtering by route type, and diffing staged changes against production.", "operationId": "getRoutes", "security": [ { "bearerToken": [] } ], "summary": "Get project routing rules", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "oneOf": [ { "type": "object" }, { "properties": { "routes": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "description": { "type": "string", "description": "Optional description of what the routing rule does." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether the routing rule is enabled. Defaults to true." }, "staged": { "type": "boolean", "enum": [ false, true ], "description": "Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production." }, "route": { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, 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`)." }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "middlewarePath": { "type": "string", "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." }, "middlewareRawSrc": { "items": { "type": "string" }, "type": "array", "description": "The original middleware matchers." }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "rawSrc": { "type": "string", "description": "Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "The syntax type of the source pattern. Determines how the pattern is compiled to regex." }, "routeType": { "type": "string", "enum": [ "redirect", "rewrite", "set_status", "transform" ], "description": "Computed route type based on the route configuration. Only present in API responses, not stored in S3." } }, "required": [ "id", "name", "route" ], "type": "object", "description": "A routing rule with metadata for project-level routing." }, "type": "array" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." }, "diffCount": { "type": "number" } }, "required": [ "diffCount", "routes", "version" ], "type": "object" }, { "properties": { "routes": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "description": { "type": "string", "description": "Optional description of what the routing rule does." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether the routing rule is enabled. Defaults to true." }, "staged": { "type": "boolean", "enum": [ false, true ], "description": "Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production." }, "route": { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, 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`)." }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "middlewarePath": { "type": "string", "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." }, "middlewareRawSrc": { "items": { "type": "string" }, "type": "array", "description": "The original middleware matchers." }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "rawSrc": { "type": "string", "description": "Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "The syntax type of the source pattern. Determines how the pattern is compiled to regex." }, "routeType": { "type": "string", "enum": [ "redirect", "rewrite", "set_status", "transform" ], "description": "Computed route type based on the route configuration. Only present in API responses, not stored in S3." } }, "required": [ "id", "name", "route" ], "type": "object", "description": "A routing rule with metadata for project-level routing." }, "type": "array" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "routes", "version" ], "type": "object" }, { "properties": { "routes": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "description": { "type": "string", "description": "Optional description of what the routing rule does." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether the routing rule is enabled. Defaults to true." }, "staged": { "type": "boolean", "enum": [ false, true ], "description": "Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production." }, "route": { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, 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`)." }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "middlewarePath": { "type": "string", "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." }, "middlewareRawSrc": { "items": { "type": "string" }, "type": "array", "description": "The original middleware matchers." }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "rawSrc": { "type": "string", "description": "Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "The syntax type of the source pattern. Determines how the pattern is compiled to regex." }, "routeType": { "type": "string", "enum": [ "redirect", "rewrite", "set_status", "transform" ], "description": "Computed route type based on the route configuration. Only present in API responses, not stored in S3." } }, "required": [ "id", "name", "route" ], "type": "object", "description": "A routing rule with metadata for project-level routing." }, "type": "array" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." }, "limit": { "properties": { "maxRoutes": { "type": "number" }, "currentRoutes": { "type": "number" } }, "required": [ "currentRoutes", "maxRoutes" ], "type": "object" } }, "required": [ "limit", "routes", "version" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ] }, "put": { "description": "Stage routing rules for a project. Set `overwrite` to true to replace all existing rules, or omit it to merge with existing rules by ID. Returns the new staged version.", "operationId": "stageRoutes", "security": [ { "bearerToken": [] } ], "summary": "Stage routing rules", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "version" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } } } } } } } } } } }, "post": { "description": "Add a single routing rule to a project at a specified position. Defaults to the end of the list if no position is provided. The route is enabled by default. Stages a new version with the added route.", "operationId": "addRoute", "security": [ { "bearerToken": [] } ], "summary": "Add a routing rule", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "route": { "properties": { "routeType": { "type": "string", "enum": [ "redirect", "rewrite", "set_status", "transform" ] }, "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "description": { "type": "string", "description": "Optional description of what the routing rule does." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether the routing rule is enabled. Defaults to true." }, "staged": { "type": "boolean", "enum": [ false, true ], "description": "Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production." }, "route": { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, 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`)." }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "middlewarePath": { "type": "string", "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." }, "middlewareRawSrc": { "items": { "type": "string" }, "type": "array", "description": "The original middleware matchers." }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "rawSrc": { "type": "string", "description": "Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "The syntax type of the source pattern. Determines how the pattern is compiled to regex." } }, "required": [ "id", "name", "route" ], "type": "object" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "route", "version" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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\"." } } } } } } } } }, "delete": { "description": "Delete one or more routing rules from a project by ID. Stages a new version with the routes removed.", "operationId": "deleteRoutes", "security": [ { "bearerToken": [] } ], "summary": "Delete routing rules", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "deletedCount": { "type": "number" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "deletedCount", "version" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" } } ], "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" } } } } } } } } }, "/v1/projects/{projectId}/routes/{routeId}": { "patch": { "description": "Replace a routing rule identified by its ID, or restore it from the current production version. Stages a new version with the modified route.", "operationId": "editRoute", "security": [ { "bearerToken": [] } ], "summary": "Edit a routing rule", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "route": { "properties": { "routeType": { "type": "string", "enum": [ "redirect", "rewrite", "set_status", "transform" ] }, "id": { "type": "string", "description": "Unique identifier for the routing rule." }, "name": { "type": "string", "description": "Human-readable name for the routing rule." }, "description": { "type": "string", "description": "Optional description of what the routing rule does." }, "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether the routing rule is enabled. Defaults to true." }, "staged": { "type": "boolean", "enum": [ false, true ], "description": "Whether this route is new and not yet published to production. Set to true only when a route is first created via add-route. Cleared (set to false) when a version is promoted to production." }, "route": { "properties": { "src": { "type": "string" }, "dest": { "type": "string" }, "headers": { "additionalProperties": { "type": "string" }, "type": "object" }, "methods": { "items": { "type": "string" }, "type": "array" }, "continue": { "type": "boolean", "enum": [ false, true ] }, "override": { "type": "boolean", "enum": [ false, true ] }, "caseSensitive": { "type": "boolean", "enum": [ false, true ] }, "check": { "type": "boolean", "enum": [ false, true ] }, "important": { "type": "boolean", "enum": [ false, true ] }, "status": { "type": "number" }, "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "missing": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "cookie", "header", "query" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "re": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key", "type" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "challenge", "deny" ] } }, "required": [ "action" ], "type": "object" }, "transforms": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "request.headers", "request.query", "response.headers" ] }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] }, "target": { "properties": { "key": { "oneOf": [ { "type": "string" }, { "properties": { "eq": { "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" } }, "type": "object" } ] } }, "required": [ "key" ], "type": "object" }, "args": { "oneOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "op", "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "request.path" ] }, "op": { "type": "string", "enum": [ "set" ] }, "args": { "type": "string" }, "env": { "items": { "type": "string" }, "type": "array" } }, "required": [ "args", "op", "type" ], "type": "object" } ] }, "type": "array" }, "env": { "items": { "type": "string" }, "type": "array" }, "locale": { "properties": { "redirect": { "additionalProperties": { "type": "string" }, "type": "object" }, "cookie": { "type": "string" } }, "type": "object" }, "source": { "type": "string", "description": "Aliases for `src`, `dest`, and `status`. These provide consistency with the `rewrites`, `redirects`, and `headers` fields which use `source`, `destination`, and `statusCode`. During normalization, 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`)." }, "destination": { "oneOf": [ { "type": "string" }, { "properties": { "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." }, "service": { "type": "string" }, "path": { "type": "string", "description": "Routing-only path used to select a route inside the target service." } }, "required": [ "service" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "middlewarePath": { "type": "string", "description": "A middleware key within the `output` key under the build result. Overrides a `middleware` definition." }, "middlewareRawSrc": { "items": { "type": "string" }, "type": "array", "description": "The original middleware matchers." }, "middleware": { "type": "number", "description": "A middleware index in the `middleware` key under the build result" }, "respectOriginCacheControl": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "src" ], "type": "object", "description": "The route definition from @vercel/routing-utils." }, "rawSrc": { "type": "string", "description": "Original source pattern provided by user (path-to-regexp or regex). Used to display the user's input in API responses." }, "rawDest": { "type": "string", "description": "Original destination provided by user." }, "srcSyntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ], "description": "The syntax type of the source pattern. Determines how the pattern is compiled to regex." } }, "required": [ "id", "name", "route" ], "type": "object" }, "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "version" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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." } } } } } } } }, "/v1/projects/{projectId}/routes/generate": { "post": { "description": "Generate a routing rule configuration from a natural language description. Returns a suggested route configuration that can be reviewed and saved.", "operationId": "generateRoute", "security": [ { "bearerToken": [] } ], "summary": "Generate a routing rule from natural language", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "route": { "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "pathCondition": { "properties": { "value": { "type": "string" }, "syntax": { "type": "string", "enum": [ "equals", "path-to-regexp", "regex" ] } }, "required": [ "syntax", "value" ], "type": "object" }, "conditions": { "items": { "properties": { "field": { "type": "string", "enum": [ "cookie", "header", "host", "query" ] }, "operator": { "type": "string", "enum": [ "contains", "eq", "exists", "re" ] }, "key": { "type": "string" }, "value": { "type": "string" }, "missing": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "field", "missing", "operator" ], "type": "object" }, "type": "array" }, "actions": { "items": { "properties": { "type": { "type": "string", "enum": [ "modify", "redirect", "rewrite", "set-status" ] }, "subType": { "type": "string", "enum": [ "response-headers", "transform-request-header", "transform-request-query" ] }, "dest": { "type": "string" }, "status": { "type": "number" }, "headers": { "items": { "properties": { "key": { "type": "string" }, "value": { "type": "string" }, "op": { "type": "string", "enum": [ "append", "delete", "set" ] } }, "required": [ "key", "op" ], "type": "object" }, "type": "array" } }, "required": [ "type" ], "type": "object" }, "type": "array" } }, "required": [ "actions", "description", "name", "pathCondition" ], "type": "object" }, "error": { "type": "string" } }, "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "408": { "description": "" }, "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" } } } } } } } } } } } } } } } }, "/v1/projects/{projectId}/routes/versions": { "get": { "description": "Get the version history for a project's routing rules. Returns the staging version (if one exists) followed by production versions, most recent first. The staging version has `isStaging: true` and the current production version has `isLive: true`.", "operationId": "getRouteVersions", "security": [ { "bearerToken": [] } ], "summary": "Get routing rule version history", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "versions": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." }, "type": "array" } }, "required": [ "versions" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "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" } } ] }, "post": { "description": "Promote staged routing rules to production, restore a previous production version, or discard staged changes. - `promote`: Publishes the staging version to production. - `restore`: Rolls back to a previous production version. - `discard`: Removes the staging version without publishing.", "operationId": "updateRouteVersions", "security": [ { "bearerToken": [] } ], "summary": "Promote, restore, or discard a routing rule version", "tags": [ "project-routes" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "version": { "properties": { "id": { "type": "string", "description": "Unique identifier for the version." }, "s3Key": { "type": "string", "description": "The S3 key where the routing rules are stored." }, "lastModified": { "type": "number", "description": "Timestamp of when this version was last modified." }, "createdBy": { "type": "string", "description": "The user who created this version." }, "isStaging": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is staged and not yet promoted to production." }, "isLive": { "type": "boolean", "enum": [ false, true ], "description": "Whether this version is currently live in production." }, "ruleCount": { "type": "number", "description": "The number of routing rules in this version." }, "alias": { "type": "string", "description": "The staging alias for previewing this version." } }, "required": [ "createdBy", "id", "lastModified", "s3Key" ], "type": "object", "description": "A version of routing rules stored in S3." } }, "required": [ "version" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "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" ] } } } } } } } }, "/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" }, "creator": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "via": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "app", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "required": [ "integration", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object" } ] }, "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": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "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": { "id": { "type": "string" }, "canceledAt": { "nullable": true, "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "paidAt": { "type": "number" }, "sampleRatePercent": { "nullable": true, "type": "number" }, "spendLimitInDollars": { "nullable": true, "type": "number" } }, "required": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "createdAt": { "type": "number" }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "installCommand": { "nullable": true, "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "env": { "items": { "properties": { "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "secret", "sensitive", "system" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "id": { "type": "string" }, "key": { "type": "string" }, "configurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "gitBranch": { "type": "string" }, "visibility": { "type": "string", "enum": [ "config", "secret" ], "description": "User-facing config/secret model. When set, authoritative for new code paths when the env-var-config-secret-ui flag is enabled. Legacy rows omit this field; legacy rows omit it and callers fall back to existing `type` behavior." }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-webhook-public-key" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" } ] }, "internalContentHint": { "nullable": true, "properties": { "type": { "type": "string", "enum": [ "flags-secret" ] }, "encryptedValue": { "type": "string", "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." } }, "required": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "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 ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "latestDeployments": { "items": { "properties": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "array" }, "link": { "oneOf": [ { "properties": { "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "projectNameWithNamespace": { "type": "string" }, "projectNamespace": { "type": "string" }, "projectOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes. This is the id of the top level group that a namespace belongs to. Gitlab supports group nesting (up to 20 levels)." }, "projectUrl": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "type": "object" }, { "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, "owner": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "uuid": { "type": "string" }, "workspaceUuid": { "type": "string" }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug, e.g. `acme`." }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "ownerId": { "type": "string", "description": "Origin namespace id (`ns_…`) of the owner." }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "owner", "ownerId", "productionBranch", "repo", "repoId", "type" ], "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" ] }, "outputDirectory": { "nullable": true, "type": "string" }, "passwordProtection": { "nullable": true, "type": "object" }, "passport": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] }, "connectorId": { "type": "string" } }, "required": [ "connectorId", "deploymentType" ], "type": "object" }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "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" ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionRegion": { "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "object" }, "transferCompletedAt": { "type": "number" }, "transferStartedAt": { "type": "number" }, "transferToAccountId": { "type": "string" }, "transferredFromAccountId": { "type": "string" }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "updatedAt": { "type": "number" }, "live": { "type": "boolean", "enum": [ false, true ] }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "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`." }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "attackModeActiveUntil": { "nullable": true, "type": "number" }, "firewallConfigVersion": { "type": "number" }, "firewallRoutes": { "items": { "properties": { "src": { "oneOf": [ { "type": "string" }, { "properties": { "re": { "type": "string" }, "eq": { "type": "string" }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "list": { "type": "string" } }, "type": "object" } ] }, "has": { "items": { "properties": { "type": { "type": "string", "enum": [ "cookie", "domain_environment", "environment", "header", "headers", "host", "initial_request_path", "ip_address", "method", "path", "protocol", "query", "region", "scheme", "trusted_source" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "re": { "type": "string" }, "eq": { "type": "string" }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "list": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type" ], "type": "object" }, "type": "array" }, "missing": { "items": { "properties": { "type": { "type": "string", "enum": [ "cookie", "domain_environment", "environment", "header", "headers", "host", "initial_request_path", "ip_address", "method", "path", "protocol", "query", "region", "scheme", "trusted_source" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "re": { "type": "string" }, "eq": { "type": "string" }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "list": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type" ], "type": "object" }, "type": "array" }, "dest": { "type": "string" }, "status": { "type": "number" }, "handle": { "type": "string", "enum": [ "finalize", "init" ] }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "rule_id": { "type": "string" }, "ttl": { "type": "number" }, "erl": { "properties": { "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "window": { "type": "number" }, "limit": { "type": "number" }, "keys": { "items": { "type": "string" }, "type": "array" } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action", "rule_id" ], "type": "object" }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.headers" ] }, "op": { "type": "string", "enum": [ "append" ] }, "target": { "properties": { "key": { "type": "string" } }, "required": [ "key" ], "type": "object" }, "args": { "type": "string" } }, "required": [ "args", "op", "target", "type" ], "type": "object" }, "type": "array" } }, "type": "object" }, "type": "array" }, "rulesets": { "additionalProperties": { "properties": { "action": { "type": "string", "enum": [ "allow", "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "rateLimit": { "nullable": true, "properties": { "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "window": { "type": "number" }, "limit": { "type": "number" }, "keys": { "items": { "type": "string" }, "type": "array" } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "redirect": { "nullable": true, "properties": { "location": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "location", "permanent" ], "type": "object" }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action" ], "type": "object" }, "type": "object" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "traffic_sources": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "traffic_sources", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "requestLogsKey": { "items": { "type": "string" }, "type": "array" }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "global", "team" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "tier": { "type": "string" }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] }, "interstitialHistory": { "items": { "properties": { "action": { "type": "string", "enum": [ "add-deployment-interstitial", "add-project-interstitial", "remove-deployment-interstitial", "remove-project-interstitial" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "reason": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" } }, "required": [ "action", "createdAt" ], "type": "object" }, "type": "array" } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" } }, "required": [ "accountId", "alias", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig", "serverlessFunctionRegion" ], "type": "object" }, "type": "array" }, { "properties": { "projects": { "items": { "properties": { "accountId": { "type": "string" }, "creator": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "via": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "app", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "required": [ "integration", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object" } ] }, "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": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "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": { "id": { "type": "string" }, "canceledAt": { "nullable": true, "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "paidAt": { "type": "number" }, "sampleRatePercent": { "nullable": true, "type": "number" }, "spendLimitInDollars": { "nullable": true, "type": "number" } }, "required": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "createdAt": { "type": "number" }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "installCommand": { "nullable": true, "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "env": { "items": { "properties": { "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "secret", "sensitive", "system" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "id": { "type": "string" }, "key": { "type": "string" }, "configurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "gitBranch": { "type": "string" }, "visibility": { "type": "string", "enum": [ "config", "secret" ], "description": "User-facing config/secret model. When set, authoritative for new code paths when the env-var-config-secret-ui flag is enabled. Legacy rows omit this field; legacy rows omit it and callers fall back to existing `type` behavior." }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-webhook-public-key" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" } ] }, "internalContentHint": { "nullable": true, "properties": { "type": { "type": "string", "enum": [ "flags-secret" ] }, "encryptedValue": { "type": "string", "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." } }, "required": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "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 ] }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "latestDeployments": { "items": { "properties": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "array" }, "link": { "oneOf": [ { "properties": { "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "projectNameWithNamespace": { "type": "string" }, "projectNamespace": { "type": "string" }, "projectOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes. This is the id of the top level group that a namespace belongs to. Gitlab supports group nesting (up to 20 levels)." }, "projectUrl": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "type": "object" }, { "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, "owner": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "uuid": { "type": "string" }, "workspaceUuid": { "type": "string" }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug, e.g. `acme`." }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "ownerId": { "type": "string", "description": "Origin namespace id (`ns_…`) of the owner." }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "owner", "ownerId", "productionBranch", "repo", "repoId", "type" ], "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" ] }, "outputDirectory": { "nullable": true, "type": "string" }, "passwordProtection": { "nullable": true, "type": "object" }, "passport": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] }, "connectorId": { "type": "string" } }, "required": [ "connectorId", "deploymentType" ], "type": "object" }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "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" ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionRegion": { "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "object" }, "transferCompletedAt": { "type": "number" }, "transferStartedAt": { "type": "number" }, "transferToAccountId": { "type": "string" }, "transferredFromAccountId": { "type": "string" }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "updatedAt": { "type": "number" }, "live": { "type": "boolean", "enum": [ false, true ] }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "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`." }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "attackModeActiveUntil": { "nullable": true, "type": "number" }, "firewallConfigVersion": { "type": "number" }, "firewallRoutes": { "items": { "properties": { "src": { "oneOf": [ { "type": "string" }, { "properties": { "re": { "type": "string" }, "eq": { "type": "string" }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "list": { "type": "string" } }, "type": "object" } ] }, "has": { "items": { "properties": { "type": { "type": "string", "enum": [ "cookie", "domain_environment", "environment", "header", "headers", "host", "initial_request_path", "ip_address", "method", "path", "protocol", "query", "region", "scheme", "trusted_source" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "re": { "type": "string" }, "eq": { "type": "string" }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "list": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type" ], "type": "object" }, "type": "array" }, "missing": { "items": { "properties": { "type": { "type": "string", "enum": [ "cookie", "domain_environment", "environment", "header", "headers", "host", "initial_request_path", "ip_address", "method", "path", "protocol", "query", "region", "scheme", "trusted_source" ] }, "key": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "properties": { "re": { "type": "string" }, "eq": { "type": "string" }, "neq": { "type": "string" }, "inc": { "items": { "type": "string" }, "type": "array" }, "ninc": { "items": { "type": "string" }, "type": "array" }, "pre": { "type": "string" }, "suf": { "type": "string" }, "gt": { "type": "number" }, "gte": { "type": "number" }, "lt": { "type": "number" }, "lte": { "type": "number" }, "list": { "type": "string" } }, "type": "object" } ] } }, "required": [ "type" ], "type": "object" }, "type": "array" }, "dest": { "type": "string" }, "status": { "type": "number" }, "handle": { "type": "string", "enum": [ "finalize", "init" ] }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "rule_id": { "type": "string" }, "ttl": { "type": "number" }, "erl": { "properties": { "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "window": { "type": "number" }, "limit": { "type": "number" }, "keys": { "items": { "type": "string" }, "type": "array" } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action", "rule_id" ], "type": "object" }, "transforms": { "items": { "properties": { "type": { "type": "string", "enum": [ "request.headers" ] }, "op": { "type": "string", "enum": [ "append" ] }, "target": { "properties": { "key": { "type": "string" } }, "required": [ "key" ], "type": "object" }, "args": { "type": "string" } }, "required": [ "args", "op", "target", "type" ], "type": "object" }, "type": "array" } }, "type": "object" }, "type": "array" }, "rulesets": { "additionalProperties": { "properties": { "action": { "type": "string", "enum": [ "allow", "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "rateLimit": { "nullable": true, "properties": { "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "window": { "type": "number" }, "limit": { "type": "number" }, "keys": { "items": { "type": "string" }, "type": "array" } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "redirect": { "nullable": true, "properties": { "location": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "location", "permanent" ], "type": "object" }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action" ], "type": "object" }, "type": "object" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "traffic_sources": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "traffic_sources", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "requestLogsKey": { "items": { "type": "string" }, "type": "array" }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "global", "team" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "tier": { "type": "string" }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] }, "interstitialHistory": { "items": { "properties": { "action": { "type": "string", "enum": [ "add-deployment-interstitial", "add-project-interstitial", "remove-deployment-interstitial", "remove-project-interstitial" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "reason": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" } }, "required": [ "action", "createdAt" ], "type": "object" }, "type": "array" } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" } }, "required": [ "accountId", "alias", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig", "serverlessFunctionRegion" ], "type": "object" }, "type": "array" }, "pagination": { "oneOf": [ { "properties": { "count": { "type": "number", "description": "Amount of items in the current page.", "example": 20 }, "next": { "nullable": true, "type": "string", "description": "Continuation token that must be used to request the next page. Base32 encoded for safe URL transmission.", "example": "JBSWY3DPEHPK3PXP" } }, "required": [ "count", "next" ], "type": "object", "description": "This object contains information related to the pagination of the current request using continuation tokens. Since CosmosDB doesn't support going to previous pages, only count and next are provided." }, { "$ref": "#/components/schemas/Pagination" } ] } }, "required": [ "pagination", "projects" ], "type": "object" }, { "properties": { "projects": { "items": { "properties": { "accountId": { "type": "string" }, "creator": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "via": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "app", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "required": [ "integration", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object" } ] }, "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": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "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": { "id": { "type": "string" }, "canceledAt": { "nullable": true, "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "paidAt": { "type": "number" }, "sampleRatePercent": { "nullable": true, "type": "number" }, "spendLimitInDollars": { "nullable": true, "type": "number" } }, "required": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "preview", "production" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "crons": { "properties": { "enabledAt": { "type": "number", "description": "The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs." }, "disabledAt": { "nullable": true, "type": "number", "description": "The time the feature was disabled for this project." }, "updatedAt": { "type": "number" }, "deploymentId": { "nullable": true, "type": "string", "description": "The ID of the Deployment from which the definitions originated." }, "definitions": { "items": { "properties": { "host": { "type": "string", "description": "The hostname that should be used.", "example": "vercel.com" }, "path": { "type": "string", "description": "The path that should be called for the cronjob.", "example": "/api/crons/sync-something?hello=world" }, "schedule": { "type": "string", "description": "The cron expression.", "example": "0 0 * * *" }, "source": { "type": "string", "enum": [ "api" ], "description": "The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json)." }, "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "dataCache": { "properties": { "userDisabled": { "type": "boolean", "enum": [ false, true ] }, "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "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" } ] }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "installCommand": { "nullable": true, "type": "string" }, "env": { "items": { "properties": { "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "secret", "sensitive", "system" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "id": { "type": "string" }, "key": { "type": "string" }, "configurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "gitBranch": { "type": "string" }, "visibility": { "type": "string", "enum": [ "config", "secret" ], "description": "User-facing config/secret model. When set, authoritative for new code paths when the env-var-config-secret-ui flag is enabled. Legacy rows omit this field; legacy rows omit it and callers fall back to existing `type` behavior." }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-webhook-public-key" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" } ] }, "internalContentHint": { "nullable": true, "properties": { "type": { "type": "string", "enum": [ "flags-secret" ] }, "encryptedValue": { "type": "string", "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." } }, "required": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "customEnvironments": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." }, "verification": { "items": { "properties": { "type": { "type": "string" }, "domain": { "type": "string" }, "value": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "domain", "reason", "type", "value" ], "type": "object", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." }, "type": "array", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." } }, "required": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "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 ] }, "services": { "items": { "properties": { "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." }, "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", "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." } }, "required": [ "serviceName" ], "type": "object" }, "type": "array" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "jobs": { "properties": { "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "typecheck": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "mfe-config-present": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" } }, "type": "object" }, "latestDeployments": { "items": { "properties": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "array" }, "link": { "oneOf": [ { "properties": { "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "projectNameWithNamespace": { "type": "string" }, "projectNamespace": { "type": "string" }, "projectOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes. This is the id of the top level group that a namespace belongs to. Gitlab supports group nesting (up to 20 levels)." }, "projectUrl": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "type": "object" }, { "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, "owner": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "uuid": { "type": "string" }, "workspaceUuid": { "type": "string" }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug, e.g. `acme`." }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "ownerId": { "type": "string", "description": "Origin namespace id (`ns_…`) of the owner." }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "owner", "ownerId", "productionBranch", "repo", "repoId", "type" ], "type": "object" } ] }, "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" }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "routeObservabilityToThisProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether observability data should be routed to this microfrontend project or a root project." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "enum": [ false, true ], "description": "Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "optionsAllowlist": { "nullable": true, "properties": { "paths": { "items": { "properties": { "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" } }, "required": [ "paths" ], "type": "object" }, "outputDirectory": { "nullable": true, "type": "string" }, "passwordProtection": { "nullable": true, "type": "object" }, "passport": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] }, "connectorId": { "type": "string" } }, "required": [ "connectorId", "deploymentType" ], "type": "object" }, "protectionConfig": { "properties": { "sandboxUrls": { "properties": { "inheritDeploymentProtection": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" } }, "type": "object" }, "sandbox": { "properties": { "region": { "type": "string", "enum": [ "cle1", "iad1", "sfo1" ] }, "failoverRegions": { "items": { "type": "string", "enum": [ "cle1", "iad1", "sfo1" ] }, "type": "array" } }, "type": "object" }, "productionDeploymentsFastLane": { "type": "boolean", "enum": [ false, true ] }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "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" ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollbackDescription": { "properties": { "userId": { "type": "string", "description": "The user who rolled back the project." }, "username": { "type": "string", "description": "The username of the user who rolled back the project." }, "description": { "type": "string", "description": "User-supplied explanation of why they rolled back the project. Limited to 250 characters." }, "createdAt": { "type": "number", "description": "Timestamp of when the rollback was requested." } }, "required": [ "createdAt", "description", "userId", "username" ], "type": "object", "description": "Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback." }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "defaultResourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "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" ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "skewProtectionBoundaryAt": { "type": "number" }, "skewProtectionMaxAge": { "type": "number" }, "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "staticIps": { "properties": { "builds": { "type": "boolean", "enum": [ false, true ] }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "regions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "builds", "enabled", "regions" ], "type": "object" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "object" }, "transferCompletedAt": { "type": "number" }, "transferStartedAt": { "type": "number" }, "transferToAccountId": { "type": "string" }, "transferredFromAccountId": { "type": "string" }, "updatedAt": { "type": "number" }, "live": { "type": "boolean", "enum": [ false, true ] }, "enablePreviewFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "enableProductionFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "permissions": { "properties": { "oauth2Connection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "user": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userMfaConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userPreference": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAuthn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "accessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "agent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayApiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayApiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayApiKeyZdrExemption": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayBudget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayCredits": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayPrivateModels": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayGuardrails": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayRules": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewaySettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alerts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alertRules": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "analyticsSampling": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "analyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyAiGateway": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oauth2Application": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallationRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "auditLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingAddress": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInformation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInvoiceEmailRecipient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInvoiceLanguage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingPurchaseOrder": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingRefund": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingTaxId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blob": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blobStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "budget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "cacheArtifact": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "cacheArtifactUsageEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "codeChecks": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "codeOwners": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciInvocations": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "concurrentBuilds": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connect": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connectConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connectLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClientProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachineDefault": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheBillingSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "defaultDeploymentProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainAcceptDelegation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainAuthCodes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainCertificate": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainPurchase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainRecord": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "drain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfigItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfigSchema": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfigToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "endpointVerification": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "fileUpload": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "flagsExplorerSubscription": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "gitRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "imageOptimizationNewPrice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationProjects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationRole": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationDeploymentAction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResource": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceReplCommand": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceSecrets": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationSSOSession": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationVercelConfigurationOverride": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationPullRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ipBlocking": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "jobGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "kmsIssuer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "kmsProjectGrant": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logDrain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceBillingData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationEdgeConfigData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceFlexCommit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInstallationMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "Monitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringChart": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringQuery": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationCustomerBudget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDeploymentFailed": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainExpire": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainMoved": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainPurchase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainRenewal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainUnverified": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "NotificationMonitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationPaymentFailed": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationPreferences": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationStatementOfReasons": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationUsageAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oidcFederationPolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityFunnel": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityNotebook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "openTelemetryEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ownEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organization": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationTeam": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtectionInvoiceItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "paymentMethod": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "permissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "postgres": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "postgresStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "previewDeploymentSuffix": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateCloudAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "proTrialOnboarding": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "rateLimit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redis": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redisStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "remoteCaching": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "repository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "samlConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "secret": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sensitiveEnvironmentVariablePolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVars": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "space": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "spaceRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeIsLocked": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTokenSetSensitive": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "supportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "supportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "team": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamAccessRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamFellowMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamGitExclusivity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamInvite": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamInviteCode": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamInviteLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamJoin": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMemberMfaStatus": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMicrofrontends": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembershipDisconnectSAML": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamTokenInvalidation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "token": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "toolbarComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usageCycle": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vcrRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vpcPeeringConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalyticsPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook-event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "bulkRedirects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachine": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connectConfigurationLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deployment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentBuildLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentCheckPreview": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentCheckReRunFromProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentProductionGit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentV0": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPreview": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPrivate": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPromote": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentRollback": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "environments": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "job": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logsPreset": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandBuild": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandConcurrency": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "optionsAllowlist": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateLinkEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "productionAliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "project": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectAccessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectAnalyticsSampling": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectAnalyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheckRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentExpiration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentHook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentProtectionStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainVerify": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEnvVars": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEnvVarsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEnvVarsUnownedByIntegration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFlags": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFlagsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFlagsSdkKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFromV0": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectIntegrationConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectMonitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectOIDCToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectPermissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRollingRelease": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRoutes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTier": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferOut": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "pageIntegrity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "seawallConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityPlusConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "shareableLinkStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "skewProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "analytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "trustedIps": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "trustedSources": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "v0Chat": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" } }, "type": "object" }, "lastRollbackTarget": { "nullable": true, "type": "object" }, "lastAliasRequest": { "nullable": true, "properties": { "fromDeploymentId": { "nullable": true, "type": "string" }, "toDeploymentId": { "type": "string" }, "fromRollingReleaseId": { "type": "string", "description": "If rolling back from a rolling release, fromDeploymentId captures the \"base\" of that rolling release, and fromRollingReleaseId captures the \"target\" of that rolling release." }, "jobStatus": { "type": "string", "enum": [ "failed", "in-progress", "pending", "skipped", "succeeded" ] }, "requestedAt": { "type": "number" }, "type": { "type": "string", "enum": [ "promote", "rollback" ] } }, "required": [ "fromDeploymentId", "jobStatus", "requestedAt", "toDeploymentId", "type" ], "type": "object" }, "protectionBypass": { "additionalProperties": { "oneOf": [ { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "integration-automation-bypass" ] }, "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "createdAt", "createdBy", "integrationId", "scope" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "automation-bypass" ] }, "isEnvVar": { "type": "boolean", "enum": [ false, true ], "description": "When there was only one bypass, it was automatically set as an env var on deployments. With multiple bypasses, there is always one bypass that is selected as the default, and gets set as an env var on deployments. As this is a new field, undefined means that the bypass is the env var. If there are any automation bypasses, exactly one must be the env var." }, "note": { "type": "string", "description": "Optional note about the bypass to be displayed in the UI" } }, "required": [ "createdAt", "createdBy", "scope" ], "type": "object" } ] }, "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "trustedIps": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", "production" ] }, "addresses": { "items": { "properties": { "value": { "type": "string" }, "note": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "protectionMode": { "type": "string", "enum": [ "additional", "exclusive" ] } }, "required": [ "addresses", "deploymentType", "protectionMode" ], "type": "object" }, { "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", "production" ] } }, "required": [ "deploymentType" ], "type": "object" } ] }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "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`." }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "concurrencyBucketName": { "type": "string" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "attackModeActiveUntil": { "nullable": true, "type": "number" }, "firewallConfigVersion": { "type": "number" }, "rulesets": { "additionalProperties": { "properties": { "action": { "type": "string", "enum": [ "allow", "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "rateLimit": { "nullable": true, "properties": { "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "window": { "type": "number" }, "limit": { "type": "number" }, "keys": { "items": { "type": "string" }, "type": "array" } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "redirect": { "nullable": true, "properties": { "location": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "location", "permanent" ], "type": "object" }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action" ], "type": "object" }, "type": "object" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "traffic_sources": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "traffic_sources", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "global", "team" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "deploymentPolicy": { "nullable": true, "properties": { "gitSources": { "nullable": true, "items": { "properties": { "sources": { "items": { "oneOf": [ { "properties": { "provider": { "type": "string", "enum": [ "bitbucket", "github" ] }, "org": { "type": "string" }, "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": { "provider": { "type": "string", "enum": [ "gitlab" ] }, "namespace": { "type": "string" }, "project": { "type": "string" } }, "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" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "system" ] }, "target": { "type": "string", "enum": [ "preview", "production" ] } }, "required": [ "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "environmentId": { "type": "string" } }, "required": [ "environmentId", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "enabled", "environments", "sources" ], "type": "object", "description": "`enabled: true` with empty `sources` is deny-all." }, "type": "array" }, "deploymentSources": { "nullable": true, "items": { "properties": { "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" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "system" ] }, "target": { "type": "string", "enum": [ "preview", "production" ] } }, "required": [ "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "environmentId": { "type": "string" } }, "required": [ "environmentId", "type" ], "type": "object" } ] }, "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." }, "tier": { "type": "string" }, "usageStatus": { "properties": { "kind": { "type": "string", "enum": [ "flat" ], "description": "Billing mode. Always 'flat' for flat-rate projects." }, "exceededAllowanceUntil": { "type": "number", "description": "Timestamp until which the project has exceeded its CDN allowance." }, "bypassThrottleUntil": { "type": "number", "description": "Timestamp until which throttling is bypassed (project pays list rates for overage)." }, "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)." }, "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`." } }, "required": [ "kind" ], "type": "object" }, "features": { "properties": { "webAnalytics": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "v0": { "type": "boolean", "enum": [ false, true ] }, "v0Created": { "type": "boolean", "enum": [ false, true ] }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] }, "interstitialHistory": { "items": { "properties": { "action": { "type": "string", "enum": [ "add-deployment-interstitial", "add-project-interstitial", "remove-deployment-interstitial", "remove-project-interstitial" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "reason": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" } }, "required": [ "action", "createdAt" ], "type": "object" }, "type": "array" } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" }, "hasDeployments": { "type": "boolean", "enum": [ false, true ] }, "dismissedToasts": { "items": { "properties": { "key": { "type": "string" }, "dismissedAt": { "type": "number" }, "action": { "type": "string", "enum": [ "accept", "cancel", "delete" ] }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "previousValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "currentValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "currentValue", "previousValue" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "action", "dismissedAt", "key", "value" ], "type": "object" }, "type": "array" }, "protectedSourcemaps": { "type": "boolean", "enum": [ false, true ] }, "tracing": { "properties": { "domains": { "type": "string" }, "ignorePaths": { "items": { "type": "string" }, "type": "array" }, "samplingRules": { "items": { "properties": { "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" }, "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." } }, "required": [ "rate" ], "type": "object" }, "type": "array" } }, "type": "object" }, "avatar": { "nullable": true, "type": "string" } }, "required": [ "accountId", "alias", "defaultResourceConfig", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig" ], "type": "object" }, "type": "array" }, "pagination": { "oneOf": [ { "properties": { "count": { "type": "number", "description": "Amount of items in the current page.", "example": 20 }, "next": { "nullable": true, "type": "string", "description": "Continuation token that must be used to request the next page. Base32 encoded for safe URL transmission.", "example": "JBSWY3DPEHPK3PXP" } }, "required": [ "count", "next" ], "type": "object", "description": "This object contains information related to the pagination of the current request using continuation tokens. Since CosmosDB doesn't support going to previous pages, only count and next are provided." }, { "$ref": "#/components/schemas/Pagination" } ] } }, "required": [ "pagination", "projects" ], "type": "object" } ] } } } }, "400": { "description": "One of the provided values in the request query is invalid." }, "401": { "description": "The request is not authorized." }, "403": { "description": "You do not have permission to access this resource." }, "410": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "aliases": [ "ls", "list" ] }, "parameters": [ { "name": "from", "description": "Query only projects updated after the given timestamp or continuation token.", "in": "query", "schema": { "description": "Query only projects updated after the given timestamp or continuation token.", "type": "string" } }, { "name": "gitForkProtection", "description": "Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed", "in": "query", "schema": { "description": "Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed", "type": "string", "enum": [ "1", "0" ], "example": "1" } }, { "name": "limit", "description": "Limit the number of projects returned", "in": "query", "schema": { "description": "Limit the number of projects returned", "type": "string" } }, { "name": "search", "description": "Search projects by the name field", "in": "query", "schema": { "description": "Search projects by the name field", "type": "string", "maxLength": 100 } }, { "name": "repo", "description": "Filter results by repo. Also used for project count", "in": "query", "schema": { "description": "Filter results by repo. Also used for project count", "type": "string" } }, { "name": "repoId", "description": "Filter results by Repository ID.", "in": "query", "schema": { "description": "Filter results by Repository ID.", "type": "string" } }, { "name": "repoUrl", "description": "Filter results by Repository URL.", "in": "query", "schema": { "description": "Filter results by Repository URL.", "type": "string", "example": "https://github.com/vercel/next.js" } }, { "name": "excludeRepos", "description": "Filter results by excluding those projects that belong to a repo", "in": "query", "schema": { "description": "Filter results by excluding those projects that belong to a repo", "type": "string" } }, { "name": "edgeConfigId", "description": "Filter results by connected Edge Config ID", "in": "query", "schema": { "description": "Filter results by connected Edge Config ID", "type": "string" } }, { "name": "edgeConfigTokenId", "description": "Filter results by connected Edge Config Token ID", "in": "query", "schema": { "description": "Filter results by connected Edge Config Token ID", "type": "string" } }, { "name": "deprecated", "in": "query", "schema": { "type": "boolean" } }, { "name": "elasticConcurrencyEnabled", "description": "Filter results by projects with elastic concurrency enabled", "in": "query", "schema": { "description": "Filter results by projects with elastic concurrency enabled", "type": "string", "enum": [ "1", "0" ], "example": "1" } }, { "name": "staticIpsEnabled", "description": "Filter results by projects with Static IPs enabled", "in": "query", "schema": { "description": "Filter results by projects with Static IPs enabled", "enum": [ "0", "1" ], "example": "1", "type": "string" } }, { "name": "buildMachineTypes", "description": "Filter results by build machine types. Accepts comma-separated values. Use \"default\" for projects without a build machine type set.", "in": "query", "schema": { "description": "Filter results by build machine types. Accepts comma-separated values. Use \"default\" for projects without a build machine type set.", "type": "string", "example": "default,enhanced" } }, { "name": "buildQueueConfiguration", "description": "Filter results by build queue configuration. SKIP_NAMESPACE_QUEUE includes projects without a configuration set.", "in": "query", "schema": { "description": "Filter results by build queue configuration. SKIP_NAMESPACE_QUEUE includes projects without a configuration set.", "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ], "example": "SKIP_NAMESPACE_QUEUE" } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ] } }, "/v1/projects/traces": { "get": { "description": "Returns the OTEL trace for a given Vercel CLI request.", "operationId": "getProjectTrace", "security": [ { "bearerToken": [] } ], "summary": "Get a project trace by request ID", "tags": [ "projects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "trace": { "properties": { "traceId": { "type": "string" }, "resources": { "items": { "properties": { "name": { "type": "string" }, "attributes": { "additionalProperties": { "type": "string" }, "type": "object" } }, "required": [ "attributes", "name" ], "type": "object" }, "type": "array" }, "spans": { "items": { "properties": { "name": { "type": "string" }, "kind": { "type": "number" }, "resource": { "type": "string" }, "library": { "properties": { "name": { "type": "string" }, "version": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "spanId": { "type": "string" }, "parentSpanId": { "type": "string" }, "status": { "properties": { "code": { "type": "number" }, "message": { "type": "string" } }, "required": [ "code" ], "type": "object" }, "traceState": { "type": "string" }, "traceFlags": { "type": "number" }, "attributes": { "additionalProperties": true, "type": "object" }, "links": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "events": { "items": { "properties": { "name": { "type": "string" }, "timestamp": { "items": { "oneOf": [ { "type": "number" }, { "type": "number" } ] }, "maxItems": 2, "minItems": 2, "type": "array" }, "attributes": { "additionalProperties": true, "type": "object" } }, "required": [ "attributes", "name", "timestamp" ], "type": "object" }, "type": "array" }, "startTime": { "items": { "oneOf": [ { "type": "number" }, { "type": "number" } ] }, "maxItems": 2, "minItems": 2, "type": "array" }, "endTime": { "items": { "oneOf": [ { "type": "number" }, { "type": "number" } ] }, "maxItems": 2, "minItems": 2, "type": "array" }, "duration": { "items": { "oneOf": [ { "type": "number" }, { "type": "number" } ] }, "maxItems": 2, "minItems": 2, "type": "array" } }, "required": [ "attributes", "duration", "endTime", "events", "kind", "library", "links", "name", "resource", "spanId", "startTime", "status", "traceFlags" ], "type": "object" }, "type": "array" }, "rootSpanId": { "type": "string" } }, "required": [ "spans", "traceId" ], "type": "object" } }, "required": [ "trace" ], "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": "projectId", "description": "The project ID", "in": "query", "required": true, "schema": { "description": "The project ID", "type": "string", "example": "prj_123", "maxLength": 150 } }, { "name": "requestId", "description": "The Vercel CLI request ID associated with the trace", "in": "query", "required": true, "schema": { "description": "The Vercel CLI request ID associated with the trace", "type": "string", "example": "cli-req-abc", "maxLength": 256 } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ] } }, "/v11/projects": { "post": { "description": "Allows to create a new project with the provided configuration. It only requires the project `name` but more configuration can be provided to override the defaults.", "operationId": "createProject", "security": [ { "bearerToken": [] } ], "summary": "Create a new project", "tags": [ "projects" ], "responses": { "200": { "description": "The project was successfuly created", "content": { "application/json": { "schema": { "properties": { "accountId": { "type": "string" }, "creator": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "via": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "app", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "required": [ "integration", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object" } ] }, "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": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "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": { "id": { "type": "string" }, "canceledAt": { "nullable": true, "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "paidAt": { "type": "number" }, "sampleRatePercent": { "nullable": true, "type": "number" }, "spendLimitInDollars": { "nullable": true, "type": "number" } }, "required": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "preview", "production" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "crons": { "properties": { "enabledAt": { "type": "number", "description": "The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs." }, "disabledAt": { "nullable": true, "type": "number", "description": "The time the feature was disabled for this project." }, "updatedAt": { "type": "number" }, "deploymentId": { "nullable": true, "type": "string", "description": "The ID of the Deployment from which the definitions originated." }, "definitions": { "items": { "properties": { "host": { "type": "string", "description": "The hostname that should be used.", "example": "vercel.com" }, "path": { "type": "string", "description": "The path that should be called for the cronjob.", "example": "/api/crons/sync-something?hello=world" }, "schedule": { "type": "string", "description": "The cron expression.", "example": "0 0 * * *" }, "source": { "type": "string", "enum": [ "api" ], "description": "The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json)." }, "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "dataCache": { "properties": { "userDisabled": { "type": "boolean", "enum": [ false, true ] }, "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "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" } ] }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "installCommand": { "nullable": true, "type": "string" }, "env": { "items": { "properties": { "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] } ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "secret", "sensitive", "system" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "id": { "type": "string" }, "key": { "type": "string" }, "configurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "gitBranch": { "type": "string" }, "visibility": { "type": "string", "enum": [ "config", "secret" ], "description": "User-facing config/secret model. When set, authoritative for new code paths when the env-var-config-secret-ui flag is enabled. Legacy rows omit this field; legacy rows omit it and callers fall back to existing `type` behavior." }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-webhook-public-key" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-database" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-no-ssl" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration-store-secret" ] }, "storeId": { "type": "string" }, "integrationId": { "type": "string" }, "integrationProductId": { "type": "string" }, "integrationConfigurationId": { "type": "string" } }, "required": [ "integrationConfigurationId", "integrationId", "integrationProductId", "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "flags-connection-string" ] }, "projectId": { "type": "string" } }, "required": [ "projectId", "type" ], "type": "object" } ] }, "internalContentHint": { "nullable": true, "properties": { "type": { "type": "string", "enum": [ "flags-secret" ] }, "encryptedValue": { "type": "string", "description": "Contains the `value` of the env variable, encrypted with a special key to make decryption possible in the subscriber Lambda." } }, "required": [ "encryptedValue", "type" ], "type": "object", "description": "Similar to `contentHints`, but should not be exposed to the user." }, "comment": { "type": "string" }, "customEnvironmentIds": { "items": { "type": "string" }, "type": "array" } }, "required": [ "key", "type", "value" ], "type": "object" }, "type": "array" }, "customEnvironments": { "items": { "properties": { "id": { "type": "string", "description": "Unique identifier for the custom environment (format: env_*)" }, "slug": { "type": "string", "description": "URL-friendly name of the environment" }, "type": { "type": "string", "enum": [ "development", "preview", "production" ], "description": "The type of environment (production, preview, or development)" }, "description": { "type": "string", "description": "Optional description of the environment's purpose" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object", "description": "Configuration for matching git branches to this environment" }, "domains": { "items": { "properties": { "name": { "type": "string" }, "apexName": { "type": "string" }, "projectId": { "type": "string" }, "redirect": { "nullable": true, "type": "string" }, "redirectStatusCode": { "nullable": true, "type": "number", "enum": [ 301, 302, 307, 308, null ] }, "gitBranch": { "nullable": true, "type": "string" }, "customEnvironmentId": { "nullable": true, "type": "string" }, "updatedAt": { "type": "number" }, "createdAt": { "type": "number" }, "verified": { "type": "boolean", "enum": [ false, true ], "description": "`true` if the domain is verified for use with the project. If `false` it will not be used as an alias on this project until the challenge in `verification` is completed." }, "verification": { "items": { "properties": { "type": { "type": "string" }, "domain": { "type": "string" }, "value": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "domain", "reason", "type", "value" ], "type": "object", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." }, "type": "array", "description": "A list of verification challenges, one of which must be completed to verify the domain for use on the project. After the challenge is complete `POST /projects/:idOrName/domains/:domain/verify` to verify the domain. Possible challenges: - If `verification.type = TXT` the `verification.domain` will be checked for a TXT record matching `verification.value`." } }, "required": [ "apexName", "name", "projectId", "verified" ], "type": "object", "description": "List of domains associated with this environment" }, "type": "array", "description": "List of domains associated with this environment" }, "currentDeploymentAliases": { "items": { "type": "string" }, "type": "array", "description": "List of aliases for the current deployment" }, "createdAt": { "type": "number", "description": "Timestamp when the environment was created" }, "updatedAt": { "type": "number", "description": "Timestamp when the environment was last updated" } }, "required": [ "createdAt", "id", "slug", "type", "updatedAt" ], "type": "object", "description": "Internal representation of a custom environment with all required properties" }, "type": "array" }, "framework": { "nullable": true, "type": "string", "enum": [ "actix-web", "angular", "ash", "astro", "axum", "blitzjs", "brunch", "bun", "container", "create-react-app", "django", "docusaurus", "docusaurus-2", "dojo", "eleventy", "elysia", "ember", "eve", "express", "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 ] }, "services": { "items": { "properties": { "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." }, "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", "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." } }, "required": [ "serviceName" ], "type": "object" }, "type": "array" }, "gitForkProtection": { "type": "boolean", "enum": [ false, true ] }, "gitLFS": { "type": "boolean", "enum": [ false, true ] }, "id": { "type": "string" }, "ipBuckets": { "items": { "properties": { "bucket": { "type": "string" }, "default": { "type": "boolean", "enum": [ false, true ] }, "supportUntil": { "type": "number" } }, "required": [ "bucket" ], "type": "object" }, "type": "array" }, "jobs": { "properties": { "lint": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "typecheck": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" }, "mfe-config-present": { "properties": { "targets": { "items": { "type": "string" }, "type": "array" } }, "required": [ "targets" ], "type": "object" } }, "type": "object" }, "latestDeployments": { "items": { "properties": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "array" }, "link": { "oneOf": [ { "properties": { "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "github-limited" ] }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repoOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes." }, "repo": { "type": "string" }, "repoId": { "type": "number" }, "type": { "type": "string", "enum": [ "github-custom-host" ] }, "host": { "type": "string" }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "host", "org", "productionBranch", "type" ], "type": "object" }, { "properties": { "projectId": { "type": "string" }, "projectName": { "type": "string" }, "projectNameWithNamespace": { "type": "string" }, "projectNamespace": { "type": "string" }, "projectOwnerId": { "type": "number", "description": "A new field, should be included in all new project links, is being added just in time when a deployment is created. This is needed for Protected Git scopes. This is the id of the top level group that a namespace belongs to. Gitlab supports group nesting (up to 20 levels)." }, "projectUrl": { "type": "string" }, "type": { "type": "string", "enum": [ "gitlab" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "productionBranch", "projectId", "projectName", "projectNameWithNamespace", "projectNamespace", "projectUrl", "type" ], "type": "object" }, { "properties": { "name": { "type": "string" }, "slug": { "type": "string" }, "owner": { "type": "string" }, "type": { "type": "string", "enum": [ "bitbucket" ] }, "uuid": { "type": "string" }, "workspaceUuid": { "type": "string" }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "name", "owner", "productionBranch", "slug", "type", "uuid", "workspaceUuid" ], "type": "object" }, { "properties": { "org": { "type": "string" }, "repo": { "type": "string" }, "type": { "type": "string", "enum": [ "vercel" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "org", "productionBranch", "repo", "type" ], "type": "object" }, { "properties": { "owner": { "type": "string", "description": "Owner (namespace) slug, e.g. `acme`." }, "repo": { "type": "string" }, "repoId": { "type": "string", "description": "Origin repository id." }, "ownerId": { "type": "string", "description": "Origin namespace id (`ns_…`) of the owner." }, "type": { "type": "string", "enum": [ "cursor-origin" ] }, "createdAt": { "type": "number" }, "deployHooks": { "items": { "properties": { "createdAt": { "type": "number" }, "id": { "type": "string" }, "name": { "type": "string" }, "ref": { "type": "string" }, "url": { "type": "string" } }, "required": [ "id", "name", "ref", "url" ], "type": "object" }, "type": "array" }, "gitCredentialId": { "type": "string" }, "updatedAt": { "type": "number" }, "sourceless": { "type": "boolean", "enum": [ false, true ] }, "productionBranch": { "type": "string" } }, "required": [ "deployHooks", "gitCredentialId", "owner", "ownerId", "productionBranch", "repo", "repoId", "type" ], "type": "object" } ] }, "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" }, "microfrontends": { "oneOf": [ { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ true ] }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "isDefaultApp", "updatedAt" ], "type": "object" }, { "properties": { "isDefaultApp": { "type": "boolean", "enum": [ false ] }, "routeObservabilityToThisProject": { "type": "boolean", "enum": [ false, true ], "description": "Whether observability data should be routed to this microfrontend project or a root project." }, "doNotRouteWithMicrofrontendsRouting": { "type": "boolean", "enum": [ false, true ], "description": "Whether to add microfrontends routing to aliases. This means domains in this project will route as a microfrontend." }, "updatedAt": { "type": "number", "description": "Timestamp when the microfrontends settings were last updated." }, "groupIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "The group IDs of microfrontends that this project belongs to. Each microfrontend project must belong to a microfrontends group that is the set of microfrontends that are used together." }, "enabled": { "type": "boolean", "enum": [ true ], "description": "Whether microfrontends are enabled for this project." }, "defaultRoute": { "type": "string", "description": "A path that is used to take screenshots and as the default path in preview links when a domain for this microfrontend is shown in the UI. Includes the leading slash, e.g. `/docs`" }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project was part of the legacy limits for hobby and pro-trial before billing was added. This field is only set when the team is upgraded to a paid plan and we are backfilling the subscription status. We cap the subscription to 2 projects and set this field for the 3rd project. When this field is set, the project is not charged for and we do not call any billing APIs for this project." } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" }, { "properties": { "updatedAt": { "type": "number" }, "groupIds": { "type": "array", "items": {}, "minItems": 0, "maxItems": 0 }, "enabled": { "type": "boolean", "enum": [ false ] }, "freeProjectForLegacyLimits": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "enabled", "groupIds", "updatedAt" ], "type": "object" } ] }, "name": { "type": "string" }, "nodeVersion": { "type": "string", "enum": [ "10.x", "12.x", "14.x", "16.x", "18.x", "20.x", "22.x", "24.x", "8.10.x" ] }, "optionsAllowlist": { "nullable": true, "properties": { "paths": { "items": { "properties": { "value": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" } }, "required": [ "paths" ], "type": "object" }, "outputDirectory": { "nullable": true, "type": "string" }, "passwordProtection": { "nullable": true, "type": "object" }, "passport": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] }, "connectorId": { "type": "string" } }, "required": [ "connectorId", "deploymentType" ], "type": "object" }, "protectionConfig": { "properties": { "sandboxUrls": { "properties": { "inheritDeploymentProtection": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" } }, "type": "object" }, "sandbox": { "properties": { "region": { "type": "string", "enum": [ "cle1", "iad1", "sfo1" ] }, "failoverRegions": { "items": { "type": "string", "enum": [ "cle1", "iad1", "sfo1" ] }, "type": "array" } }, "type": "object" }, "productionDeploymentsFastLane": { "type": "boolean", "enum": [ false, true ] }, "resourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "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" ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rollbackDescription": { "properties": { "userId": { "type": "string", "description": "The user who rolled back the project." }, "username": { "type": "string", "description": "The username of the user who rolled back the project." }, "description": { "type": "string", "description": "User-supplied explanation of why they rolled back the project. Limited to 250 characters." }, "createdAt": { "type": "number", "description": "Timestamp of when the rollback was requested." } }, "required": [ "createdAt", "description", "userId", "username" ], "type": "object", "description": "Description of why a project was rolled back, and by whom. Note that lastAliasRequest contains the from/to details of the rollback." }, "rollingRelease": { "nullable": true, "properties": { "target": { "type": "string", "description": "The environment that the release targets, currently only supports production. Adding in case we want to configure with alias groups or custom environments.", "example": "production" }, "stages": { "nullable": true, "items": { "properties": { "targetPercentage": { "type": "number", "description": "The percentage of traffic to serve to the canary deployment (0-100)", "example": 25 }, "requireApproval": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not this stage requires manual approval to proceed", "example": false }, "duration": { "type": "number", "description": "Duration in minutes for automatic advancement to the next stage", "example": 600 }, "linearShift": { "type": "boolean", "enum": [ false, true ], "description": "Whether to linearly shift traffic over the duration of this stage", "example": false } }, "required": [ "targetPercentage" ], "type": "object", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "type": "array", "description": "An array of all the stages required during a deployment release. Each stage defines a target percentage and advancement rules. The final stage must always have targetPercentage: 100." }, "canaryResponseHeader": { "type": "boolean", "enum": [ false, true ], "description": "Whether the request served by a canary deployment should return a header indicating a canary was served. Defaults to `false` when omitted.", "example": false } }, "required": [ "target" ], "type": "object", "description": "Project-level rolling release configuration that defines how deployments should be gradually rolled out" }, "defaultResourceConfig": { "properties": { "elasticConcurrencyEnabled": { "type": "boolean", "enum": [ false, true ] }, "fluid": { "type": "boolean", "enum": [ false, true ] }, "functionDefaultRegions": { "items": { "type": "string" }, "type": "array" }, "functionDefaultTimeout": { "type": "number" }, "functionDefaultMemoryType": { "type": "string", "enum": [ "performance", "performance_xl", "standard", "standard_legacy" ] }, "functionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "buildMachineType": { "type": "string", "enum": [ "basic", "enhanced", "standard", "turbo" ] }, "buildMachineSelection": { "type": "string", "enum": [ "elastic", "fixed" ] }, "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" ] }, "isNSNBDisabled": { "type": "boolean", "enum": [ false, true ] }, "buildQueue": { "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } }, "type": "object" }, "enableFunctionsBeta": { "type": "boolean", "enum": [ false, true ] } }, "type": "object", "required": [ "functionDefaultRegions" ] }, "rootDirectory": { "nullable": true, "type": "string" }, "serverlessFunctionZeroConfigFailover": { "type": "boolean", "enum": [ false, true ] }, "skewProtectionBoundaryAt": { "type": "number" }, "skewProtectionMaxAge": { "type": "number" }, "skewProtectionAllowedDomains": { "items": { "type": "string" }, "type": "array" }, "skipGitConnectDuringLink": { "type": "boolean", "enum": [ false, true ] }, "staticIps": { "properties": { "builds": { "type": "boolean", "enum": [ false, true ] }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "regions": { "items": { "type": "string" }, "type": "array" } }, "required": [ "builds", "enabled", "regions" ], "type": "object" }, "sourceFilesOutsideRootDirectory": { "type": "boolean", "enum": [ false, true ] }, "enableAffectedProjectsDeployments": { "type": "boolean", "enum": [ false, true ] }, "enableExternalRewriteCaching": { "type": "boolean", "enum": [ false, true ] }, "ssoProtection": { "nullable": true, "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews" ] }, "cve55182MigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] }, "april2026SecurityIncidentMigrationAppliedFrom": { "nullable": true, "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", null ] } }, "required": [ "deploymentType" ], "type": "object" }, "targets": { "additionalProperties": { "nullable": true, "properties": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "type": "object" }, "transferCompletedAt": { "type": "number" }, "transferStartedAt": { "type": "number" }, "transferToAccountId": { "type": "string" }, "transferredFromAccountId": { "type": "string" }, "updatedAt": { "type": "number" }, "live": { "type": "boolean", "enum": [ false, true ] }, "enablePreviewFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "enableProductionFeedback": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "permissions": { "properties": { "oauth2Connection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "user": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userMfaConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userPreference": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "userSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAuthn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "accessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "agent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayApiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayApiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayApiKeyZdrExemption": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayBudget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayCredits": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayPrivateModels": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayGuardrails": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayRules": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewaySettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aiGatewayUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alerts": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "alertRules": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "analyticsSampling": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "analyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyAiGateway": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "apiKeyOwnedBySelf": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oauth2Application": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelAppInstallationRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "auditLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingAddress": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInformation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInvoiceEmailRecipient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingInvoiceLanguage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingPurchaseOrder": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingRefund": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "billingTaxId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blob": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "blobStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "budget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "cacheArtifact": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "cacheArtifactUsageEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "codeChecks": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "codeOwners": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciInvocations": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ciLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "concurrentBuilds": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connect": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connectConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connectLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClient": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexClientProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexInstallation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connexToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachineDefault": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheBillingSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "defaultDeploymentProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainAcceptDelegation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainAuthCodes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainCertificate": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainPurchase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainRecord": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "domainTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "drain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfigItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfigSchema": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeConfigToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "endpointVerification": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "fileUpload": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "flagsExplorerSubscription": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "gitRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "imageOptimizationNewPrice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationProjects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationRole": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationConfigurationTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationDeploymentAction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationLog": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResource": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceReplCommand": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationResourceSecrets": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationSSOSession": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationVercelConfigurationOverride": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "integrationPullRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ipBlocking": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "jobGlobal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "kmsIssuer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "kmsProjectGrant": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logDrain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceBillingData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationEdgeConfigData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceExperimentationItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceFlexCommit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInstallationMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceInvoice": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "marketplaceSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "Monitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringChart": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringQuery": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "monitoringSettings": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationCustomerBudget": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDeploymentFailed": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainExpire": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainMoved": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainPurchase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainRenewal": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationDomainUnverified": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "NotificationMonitoringAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationPaymentFailed": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationPreferences": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationStatementOfReasons": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "notificationUsageAlert": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "oidcFederationPolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityFunnel": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityNotebook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "openTelemetryEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "ownEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organization": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "organizationTeam": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtectionInvoiceItem": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "paymentMethod": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "permissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "postgres": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "postgresStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "previewDeploymentSuffix": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateCloudAccount": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferIn": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "proTrialOnboarding": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "rateLimit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redis": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "redisStoreTokenSet": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "remoteCaching": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "repository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "samlConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "secret": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sensitiveEnvironmentVariablePolicy": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVars": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "space": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "spaceRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeIsLocked": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTokenSetSensitive": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "storeTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "supportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "supportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "team": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamAccessRequest": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamFellowMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamGitExclusivity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamInvite": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamInviteCode": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamInviteLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamJoin": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMemberMfaStatus": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamMicrofrontends": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembership": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamOwnMembershipDisconnectSAML": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamSudo": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "teamTokenInvalidation": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "token": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "toolbarComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "usageCycle": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vcrRepository": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vpcPeeringConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalyticsPlan": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webhook-event": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProject": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "aliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "bulkRedirects": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "buildMachine": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "connectConfigurationLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "dataCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deployment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentBuildLogs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentCheckPreview": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentCheckReRunFromProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentProductionGit": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentV0": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPreview": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPrivate": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentPromote": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "deploymentRollback": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "edgeCacheNamespace": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "environments": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "job": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logs": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "logsPreset": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "observabilityData": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandBuild": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "onDemandConcurrency": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "optionsAllowlist": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "passwordProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "privateLinkEndpoint": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "productionAliasProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "project": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectAccessGroup": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectAnalyticsSampling": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectAnalyticsUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheck": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectCheckRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentExpiration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentHook": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDeploymentProtectionStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomain": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainCheckConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainMove": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectDomainVerify": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEvent": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEnvVars": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEnvVarsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectEnvVarsUnownedByIntegration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFlags": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFlagsProduction": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFlagsSdkKey": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectFromV0": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectId": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectIntegrationConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectLink": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectMember": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectMonitoring": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectOIDCToken": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectPermissions": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProductionBranch": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectProtectionBypass": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRollingRelease": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectRoutes": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCase": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectSupportCaseComment": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTier": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransfer": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectTransferOut": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "projectUsage": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "pageIntegrity": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "seawallConfig": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "securityPlusConfiguration": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "shareableLinkStrict": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "sharedEnvVarConnection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "skewProtection": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "analytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "trustedIps": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "trustedSources": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "v0Chat": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "vercelRun": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" }, "webAnalytics": { "items": { "$ref": "#/components/schemas/ACLAction" }, "type": "array" } }, "type": "object" }, "lastRollbackTarget": { "nullable": true, "type": "object" }, "lastAliasRequest": { "nullable": true, "properties": { "fromDeploymentId": { "nullable": true, "type": "string" }, "toDeploymentId": { "type": "string" }, "fromRollingReleaseId": { "type": "string", "description": "If rolling back from a rolling release, fromDeploymentId captures the \"base\" of that rolling release, and fromRollingReleaseId captures the \"target\" of that rolling release." }, "jobStatus": { "type": "string", "enum": [ "failed", "in-progress", "pending", "skipped", "succeeded" ] }, "requestedAt": { "type": "number" }, "type": { "type": "string", "enum": [ "promote", "rollback" ] } }, "required": [ "fromDeploymentId", "jobStatus", "requestedAt", "toDeploymentId", "type" ], "type": "object" }, "protectionBypass": { "additionalProperties": { "oneOf": [ { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "integration-automation-bypass" ] }, "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "createdAt", "createdBy", "integrationId", "scope" ], "type": "object" }, { "properties": { "createdAt": { "type": "number" }, "createdBy": { "type": "string" }, "scope": { "type": "string", "enum": [ "automation-bypass" ] }, "isEnvVar": { "type": "boolean", "enum": [ false, true ], "description": "When there was only one bypass, it was automatically set as an env var on deployments. With multiple bypasses, there is always one bypass that is selected as the default, and gets set as an env var on deployments. As this is a new field, undefined means that the bypass is the env var. If there are any automation bypasses, exactly one must be the env var." }, "note": { "type": "string", "description": "Optional note about the bypass to be displayed in the UI" } }, "required": [ "createdAt", "createdBy", "scope" ], "type": "object" } ] }, "type": "object" }, "hasActiveBranches": { "type": "boolean", "enum": [ false, true ] }, "trustedIps": { "nullable": true, "oneOf": [ { "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", "production" ] }, "addresses": { "items": { "properties": { "value": { "type": "string" }, "note": { "type": "string" } }, "required": [ "value" ], "type": "object" }, "type": "array" }, "protectionMode": { "type": "string", "enum": [ "additional", "exclusive" ] } }, "required": [ "addresses", "deploymentType", "protectionMode" ], "type": "object" }, { "properties": { "deploymentType": { "type": "string", "enum": [ "all", "all_except_custom_domains", "preview", "prod_deployment_urls_and_all_previews", "production" ] } }, "required": [ "deploymentType" ], "type": "object" } ] }, "trustedSources": { "nullable": true, "properties": { "projects": { "additionalProperties": { "properties": { "label": { "type": "string" }, "customAllow": { "items": { "properties": { "from": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The source envs on the trusted project that are allowed to access `to`." } ] }, "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] } }, "required": [ "from", "to" ], "type": "object", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." }, "type": "array", "description": "Optional overrides for the default same-env-by-slug matching. Provide explicit rules to allow cross-env access or presets." } }, "type": "object" }, "type": "object" }, "oidcProviders": { "additionalProperties": { "items": { "properties": { "to": { "oneOf": [ { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "slugs" ], "type": "object", "description": "The target envs on the current project that may be accessed." }, { "properties": { "slugs": { "items": { "type": "string" }, "type": "array", "description": "System environment slugs (`production`, `preview`) and/or custom environment slugs defined on the referenced project." }, "preset": { "type": "string", "enum": [ "all-custom" ] } }, "required": [ "preset" ], "type": "object", "description": "The target envs on the current project that may be accessed." } ] }, "label": { "type": "string" }, "claims": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "type": "object" } }, "required": [ "claims", "to" ], "type": "object" }, "type": "array" }, "type": "object" } }, "type": "object" }, "gitComments": { "properties": { "onPullRequest": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on PRs" }, "onCommit": { "type": "boolean", "enum": [ false, true ], "description": "Whether the Vercel bot should comment on commits" } }, "required": [ "onCommit", "onPullRequest" ], "type": "object" }, "gitProviderOptions": { "properties": { "createDeployments": { "type": "string", "enum": [ "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`." }, "requireVerifiedCommits": { "type": "boolean", "enum": [ false, true ], "description": "Whether the project requires commits to be signed & verified before deployments will be created. - `true`: require verified commits for this project (explicit override of the team setting). - `false`: do not require verified commits (explicit override of the team setting). - absent: inherit from `team.requireVerifiedCommits`." }, "gitCommitStatus": { "type": "boolean", "enum": [ false, true ], "description": "Whether Vercel should post commit statuses for this project. When omitted, commit statuses remain enabled." }, "consolidatedGitCommitStatus": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether consolidated commit status is enabled." }, "propagateFailures": { "type": "boolean", "enum": [ false, true ], "description": "Whether to propagate individual deployment failures to the consolidated status." } }, "required": [ "enabled", "propagateFailures" ], "type": "object", "description": "Configuration for consolidated git commit status reporting. When enabled, Vercel will post a single consolidated commit status instead of individual statuses for each deployment." } }, "required": [ "createDeployments" ], "type": "object" }, "paused": { "type": "boolean", "enum": [ false, true ] }, "concurrencyBucketName": { "type": "string" }, "webAnalytics": { "properties": { "id": { "type": "string" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ true ] } }, "required": [ "id" ], "type": "object" }, "security": { "properties": { "attackModeEnabled": { "type": "boolean", "enum": [ false, true ] }, "attackModeUpdatedAt": { "type": "number" }, "firewallEnabled": { "type": "boolean", "enum": [ false, true ] }, "firewallUpdatedAt": { "type": "number" }, "attackModeActiveUntil": { "nullable": true, "type": "number" }, "firewallConfigVersion": { "type": "number" }, "rulesets": { "additionalProperties": { "properties": { "action": { "type": "string", "enum": [ "allow", "bypass", "challenge", "deny", "log", "rate_limit", "redirect" ] }, "rateLimit": { "nullable": true, "properties": { "algo": { "type": "string", "enum": [ "fixed_window", "token_bucket" ] }, "window": { "type": "number" }, "limit": { "type": "number" }, "keys": { "items": { "type": "string" }, "type": "array" } }, "required": [ "algo", "keys", "limit", "window" ], "type": "object" }, "redirect": { "nullable": true, "properties": { "location": { "type": "string" }, "permanent": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "location", "permanent" ], "type": "object" }, "actionDuration": { "nullable": true, "type": "string" }, "bypassSystem": { "nullable": true, "type": "boolean", "enum": [ false, true, null ] }, "logHeaders": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] } }, "required": [ "action" ], "type": "object" }, "type": "object" }, "firewallSeawallEnabled": { "type": "boolean", "enum": [ false, true ] }, "ja3Enabled": { "type": "boolean", "enum": [ false, true ] }, "ja4Enabled": { "type": "boolean", "enum": [ false, true ] }, "firewallBypassIps": { "items": { "type": "string" }, "type": "array" }, "managedRules": { "nullable": true, "properties": { "vercel_ruleset": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "traffic_sources": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "bot_filter": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "ai_bots": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" }, "owasp": { "properties": { "active": { "type": "boolean", "enum": [ false, true ] }, "action": { "type": "string", "enum": [ "challenge", "deny", "log" ] } }, "required": [ "active" ], "type": "object" } }, "required": [ "ai_bots", "bot_filter", "owasp", "traffic_sources", "vercel_ruleset" ], "type": "object" }, "botIdEnabled": { "type": "boolean", "enum": [ false, true ] }, "log_headers": { "oneOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "string", "enum": [ "*" ] } ] }, "securityPlus": { "type": "boolean", "enum": [ false, true ] }, "securityPlusMetadata": { "properties": { "updatedAt": { "type": "number" }, "firstEnabledAt": { "type": "number", "description": "Timestamp when the feature was first enabled. Never changes after initial enablement." } }, "required": [ "updatedAt" ], "type": "object" }, "pageIntegrityEnabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether Page Integrity is enabled for this project. Used by the metadata service to gate DynamoDB lookups against the page-integrity-inventory table." } }, "type": "object" }, "oidcTokenConfig": { "properties": { "enabled": { "type": "boolean", "enum": [ false, true ], "description": "Whether or not to generate OpenID Connect JSON Web Tokens." }, "issuerMode": { "type": "string", "enum": [ "global", "team" ], "description": "- team: `https://oidc.vercel.com/[team_slug]` - global: `https://oidc.vercel.com`" } }, "type": "object" }, "deploymentPolicy": { "nullable": true, "properties": { "gitSources": { "nullable": true, "items": { "properties": { "sources": { "items": { "oneOf": [ { "properties": { "provider": { "type": "string", "enum": [ "bitbucket", "github" ] }, "org": { "type": "string" }, "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": { "provider": { "type": "string", "enum": [ "gitlab" ] }, "namespace": { "type": "string" }, "project": { "type": "string" } }, "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" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "system" ] }, "target": { "type": "string", "enum": [ "preview", "production" ] } }, "required": [ "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "environmentId": { "type": "string" } }, "required": [ "environmentId", "type" ], "type": "object" } ] }, "type": "array" } }, "required": [ "enabled", "environments", "sources" ], "type": "object", "description": "`enabled: true` with empty `sources` is deny-all." }, "type": "array" }, "deploymentSources": { "nullable": true, "items": { "properties": { "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" }, "enabled": { "type": "boolean", "enum": [ false, true ] }, "environments": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "system" ] }, "target": { "type": "string", "enum": [ "preview", "production" ] } }, "required": [ "target", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "custom" ] }, "environmentId": { "type": "string" } }, "required": [ "environmentId", "type" ], "type": "object" } ] }, "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." }, "tier": { "type": "string" }, "usageStatus": { "properties": { "kind": { "type": "string", "enum": [ "flat" ], "description": "Billing mode. Always 'flat' for flat-rate projects." }, "exceededAllowanceUntil": { "type": "number", "description": "Timestamp until which the project has exceeded its CDN allowance." }, "bypassThrottleUntil": { "type": "number", "description": "Timestamp until which throttling is bypassed (project pays list rates for overage)." }, "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)." }, "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`." } }, "required": [ "kind" ], "type": "object" }, "features": { "properties": { "webAnalytics": { "type": "boolean", "enum": [ false, true ] } }, "type": "object" }, "v0": { "type": "boolean", "enum": [ false, true ] }, "v0Created": { "type": "boolean", "enum": [ false, true ] }, "abuse": { "properties": { "scanner": { "type": "string" }, "history": { "items": { "properties": { "scanner": { "type": "string" }, "reason": { "type": "string" }, "by": { "type": "string" }, "byId": { "type": "string" }, "at": { "type": "number" } }, "required": [ "at", "by", "byId", "reason", "scanner" ], "type": "object" }, "type": "array" }, "updatedAt": { "type": "number" }, "block": { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, "blockHistory": { "items": { "oneOf": [ { "properties": { "action": { "type": "string", "enum": [ "blocked" ] }, "reason": { "type": "string" }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "statusCode" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "unblocked" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-blocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "reason": { "type": "string" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "reason", "route" ], "type": "object" }, { "properties": { "action": { "type": "string", "enum": [ "route-unblocked" ] }, "route": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "statusCode": { "type": "number" }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" }, "ineligibleForAppeal": { "type": "boolean", "enum": [ false, true ] }, "isCascading": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "action", "createdAt", "route" ], "type": "object" } ] }, "type": "array" }, "interstitial": { "type": "boolean", "enum": [ false, true ] }, "interstitialHistory": { "items": { "properties": { "action": { "type": "string", "enum": [ "add-deployment-interstitial", "add-project-interstitial", "remove-deployment-interstitial", "remove-project-interstitial" ] }, "createdAt": { "type": "number" }, "caseId": { "type": "string" }, "reason": { "type": "string" }, "actor": { "type": "string" }, "comment": { "type": "string" } }, "required": [ "action", "createdAt" ], "type": "object" }, "type": "array" } }, "required": [ "history", "updatedAt" ], "type": "object" }, "internalRoutes": { "items": { "oneOf": [ { "properties": { "src": { "type": "string" }, "status": { "type": "number" }, "expiry": { "type": "number" } }, "required": [ "src", "status" ], "type": "object" }, { "properties": { "has": { "items": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "header" ] }, "key": { "type": "string", "enum": [ "x-vercel-ip-country" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "key", "type", "value" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "host" ] }, "value": { "properties": { "eq": { "type": "string" } }, "required": [ "eq" ], "type": "object" } }, "required": [ "type", "value" ], "type": "object" } ] }, "type": "array" }, "mitigate": { "properties": { "action": { "type": "string", "enum": [ "block_legal_cwc" ] } }, "required": [ "action" ], "type": "object" }, "src": { "type": "string" } }, "required": [ "has", "mitigate" ], "type": "object" } ] }, "type": "array" }, "hasDeployments": { "type": "boolean", "enum": [ false, true ] }, "dismissedToasts": { "items": { "properties": { "key": { "type": "string" }, "dismissedAt": { "type": "number" }, "action": { "type": "string", "enum": [ "accept", "cancel", "delete" ] }, "value": { "nullable": true, "oneOf": [ { "type": "string" }, { "type": "number" }, { "properties": { "previousValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "currentValue": { "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "currentValue", "previousValue" ], "type": "object" }, { "type": "boolean", "enum": [ false, true ] } ] } }, "required": [ "action", "dismissedAt", "key", "value" ], "type": "object" }, "type": "array" }, "protectedSourcemaps": { "type": "boolean", "enum": [ false, true ] }, "tracing": { "properties": { "domains": { "type": "string" }, "ignorePaths": { "items": { "type": "string" }, "type": "array" }, "samplingRules": { "items": { "properties": { "rate": { "type": "number" }, "env": { "type": "string", "enum": [ "preview", "production" ] }, "requestPath": { "type": "string" }, "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." } }, "required": [ "rate" ], "type": "object" }, "type": "array" } }, "type": "object" }, "avatar": { "nullable": true, "type": "string" } }, "required": [ "accountId", "alias", "defaultResourceConfig", "deploymentExpiration", "directoryListing", "id", "name", "nodeVersion", "resourceConfig" ], "type": "object" } } } }, "400": { "description": "One of the provided values in the request body is invalid.\nOne of the provided values in the request query is invalid.\nAt least one environment variable failed validation\nThe Bitbucket Webhook for the project link could not be created\nThe Gitlab Webhook for the project link could not be created" }, "401": { "description": "The request is not authorized." }, "402": { "description": "The account is missing a payment so payment method must be updated\nPro customers are allowed to deploy Serverless Functions to up to `proMaxRegions` regions, or if the project was created before the limit was introduced.\nDeploying to Serverless Functions to multiple regions requires a plan update" }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "409": { "description": "A project with the provided name already exists." }, "410": { "description": "" }, "428": { "description": "Owner does not have protection add-on" }, "429": { "description": "" }, "500": { "description": "" } }, "x-vercel-cli": { "supportedSubcommands": true, "supportedProduction": false, "bodyArguments": [ "name" ] }, "parameters": [ { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_1a2b3c4d5e6f7g8h9i0j1k2l" } }, { "description": "The Team slug to perform the request on behalf of.", "in": "query", "name": "slug", "schema": { "type": "string", "example": "my-team-url-slug" } } ], "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": false, "properties": { "enablePreviewFeedback": { "description": "Opt-in to preview toolbar on the project level", "type": "boolean", "nullable": true }, "enableProductionFeedback": { "description": "Opt-in to production toolbar on the project level", "type": "boolean", "nullable": true }, "previewDeploymentsDisabled": { "description": "Specifies whether preview deployments are disabled for this project.", "type": "boolean", "nullable": true }, "previewDeploymentSuffix": { "description": "Custom domain suffix for preview deployments. Takes precedence over team-level suffix. Must be a domain owned by the team.", "type": "string", "maxLength": 253, "nullable": true }, "buildCommand": { "description": "The build command for this project. When `null` is used this value will be automatically detected", "maxLength": 256, "type": "string", "nullable": true }, "commandForIgnoringBuildStep": { "maxLength": 256, "type": "string", "nullable": true }, "devCommand": { "description": "The dev command for this project. When `null` is used this value will be automatically detected", "maxLength": 256, "type": "string", "nullable": true }, "environmentVariables": { "description": "Collection of ENV Variables the Project will use", "items": { "properties": { "key": { "description": "Name of the ENV variable", "type": "string" }, "target": { "description": "Deployment Target or Targets in which the ENV variable will be used", "oneOf": [ { "enum": [ "production", "preview", "development" ] }, { "items": { "enum": [ "production", "preview", "development" ] }, "type": "array" } ] }, "gitBranch": { "description": "If defined, the git branch of the environment variable (must have target=preview)", "type": "string", "maxLength": 250 }, "type": { "description": "Type of the ENV variable", "enum": [ "system", "encrypted", "plain", "sensitive" ], "type": "string" }, "value": { "description": "Value for the ENV variable", "type": "string" } }, "required": [ "key", "value", "target" ], "type": "object" }, "type": "array" }, "framework": { "description": "The framework that is being used for this project. When `null` is used no framework is selected", "enum": [ null, "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", "eve", "sanity", "sanity-v2", "storybook", "nitro", "hono", "express", "h3", "koa", "nestjs", "elysia", "fastify", "xmcp", "python", "ruby", "rust", "axum", "actix-web", "bun", "node", "go", "services", "mastra" ] }, "gitRepository": { "description": "The Git Repository that will be connected to the project. When this is defined, any pushes to the specified connected Git Repository will be automatically deployed", "properties": { "repo": { "description": "The name of the git repository. For example: \\\"vercel/next.js\\\"", "type": "string" }, "type": { "description": "The Git Provider of the repository", "enum": [ "github", "github-limited", "gitlab", "bitbucket", "vercel" ] } }, "required": [ "type", "repo" ], "type": "object" }, "installCommand": { "description": "The install command for this project. When `null` is used this value will be automatically detected", "maxLength": 256, "type": "string", "nullable": true }, "name": { "description": "The desired name for the project", "example": "a-project-name", "type": "string", "maxLength": 100 }, "skipGitConnectDuringLink": { "description": "Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`.", "type": "boolean", "deprecated": true }, "ssoProtection": { "description": "The Vercel Auth setting for the project (historically named \\\"SSO Protection\\\")", "type": "object", "properties": { "deploymentType": { "type": "string", "enum": [ "all", "preview", "prod_deployment_urls_and_all_previews", "all_except_custom_domains" ] } }, "required": [ "deploymentType" ], "nullable": true }, "outputDirectory": { "description": "The output directory of the project. When `null` is used this value will be automatically detected", "maxLength": 256, "type": "string", "nullable": true }, "publicSource": { "deprecated": true, "description": "Deprecated. Accepted for backwards compatibility but ignored.", "type": "boolean", "nullable": true }, "rootDirectory": { "description": "The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root", "maxLength": 256, "type": "string", "nullable": true }, "serverlessFunctionRegion": { "description": "The region to deploy Serverless Functions in this project", "maxLength": 4, "type": "string", "nullable": true }, "serverlessFunctionZeroConfigFailover": { "description": "Specifies whether Zero Config Failover is enabled for this project.", "oneOf": [ { "type": "boolean" } ] }, "oidcTokenConfig": { "description": "OpenID Connect JSON Web Token generation configuration.", "type": "object", "additionalProperties": false, "properties": { "enabled": { "description": "Whether or not to generate OpenID Connect JSON Web Tokens.", "deprecated": true, "type": "boolean", "default": true }, "issuerMode": { "description": "team: `https://oidc.vercel.com/[team_slug]` global: `https://oidc.vercel.com`", "type": "string", "enum": [ "team", "global" ], "default": "team" } } }, "enableAffectedProjectsDeployments": { "description": "Opt-in to skip deployments when there are no changes to the root directory and its dependencies", "type": "boolean" }, "resourceConfig": { "properties": { "buildMachineType": { "enum": [ "basic", "enhanced", "turbo", "standard", "elastic" ] }, "fluid": { "type": "boolean" }, "functionDefaultRegions": { "description": "The regions to deploy Vercel Functions to for this project", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "maxLength": 4 } }, "functionDefaultTimeout": { "type": "number", "maximum": 900, "minimum": 1 }, "functionDefaultMemoryType": { "enum": [ "standard_legacy", "standard", "performance", "performance_xl" ] }, "functionZeroConfigFailover": { "description": "Specifies whether Zero Config Failover is enabled for this project.", "oneOf": [ { "type": "boolean" } ] }, "elasticConcurrencyEnabled": { "type": "boolean" }, "buildMachineSelection": { "enum": [ "elastic", "fixed" ] }, "buildMachineElasticLastUpdated": { "type": "number" }, "buildMachineElasticReason": { "enum": [ "oom-failure", "enospc-failure", "build-timeout-failure", "basic-floor", "high-peak-memory", "sustained-high-cpu", "high-peak-disk", "long-build-duration", "short-build-duration", "enterprise-floor" ] }, "isNSNBDisabled": { "type": "boolean" }, "buildQueue": { "type": "object", "properties": { "configuration": { "type": "string", "enum": [ "SKIP_NAMESPACE_QUEUE", "WAIT_FOR_NAMESPACE_QUEUE" ] } } }, "enableFunctionsBeta": { "type": "boolean" } }, "type": "object", "description": "Specifies resource override configuration for the project", "additionalProperties": false } }, "required": [ "name" ], "type": "object" } } } } } }, "/v1/projects/{idOrName}/token": { "post": { "description": "Generates an OIDC token for the project and returns it.", "operationId": "getProjectToken", "security": [ { "bearerToken": [] } ], "summary": "Generate a project OIDC token", "tags": [ "projects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "token": { "type": "string" } }, "required": [ "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." }, "403": { "description": "You do not have permission to access this resource." }, "404": { "description": "" }, "410": { "description": "" } }, "parameters": [ { "name": "idOrName", "description": "The project ID or name", "in": "path", "required": true, "schema": { "description": "The project ID or name", "type": "string", "example": "my-project, ", "maxLength": 150 } }, { "description": "The Team identifier to perform the request on behalf of.", "in": "query", "name": "teamId", "schema": { "type": "string", "example": "team_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": { "source": { "description": "The source that is calling the endpoint.", "type": "string", "example": "vercel-cli:pull", "maxLength": 150 } } } } } } } }, "/v1/projects/traces/session": { "post": { "description": "Mints a short-lived HS256 JWT scoped to a deployment hostname. The Vercel CLI presents this JWT to the Vercel proxy on requests it wants traced.", "operationId": "createTraceSession", "security": [ { "bearerToken": [] } ], "summary": "Create a trace session token for a deployment", "tags": [ "projects" ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "properties": { "token": { "type": "string" } }, "required": [ "token" ], "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." }, "410": { "description": "" }, "422": { "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", "hostname" ], "additionalProperties": false, "properties": { "projectId": { "type": "string", "description": "The project ID the deployment belongs to." }, "hostname": { "type": "string", "description": "The deployment hostname to scope the trace session to." } } } } } } } }, "/v9/projects/{idOrName}": { "get": { "description": "Get the information for a specific project by passing either the project `id` or `name` in the URL.", "operationId": "getProject", "security": [ { "bearerToken": [] } ], "summary": "Find a project by id or name", "tags": [ "projects" ], "responses": { "200": { "description": "The project information", "content": { "application/json": { "schema": { "properties": { "integrations": { "items": { "properties": { "installationId": { "type": "string", "description": "The integration installation ID.", "example": "icfg_3bwCLgxL8qt5kjRLcv2Dit7F" }, "resources": { "items": { "properties": { "externalResourceId": { "type": "string" } }, "required": [ "externalResourceId" ], "type": "object", "description": "The list of the installation resources connected to the project." }, "type": "array", "description": "The list of the installation resources connected to the project." } }, "required": [ "installationId" ], "type": "object", "description": "Integration installation enabled on the project." }, "type": "array" }, "accountId": { "type": "string" }, "creator": { "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "user" ] }, "via": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "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": { "type": { "type": "string", "enum": [ "app" ] }, "app": { "properties": { "id": { "type": "string" } }, "required": [ "id" ], "type": "object" } }, "required": [ "app", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "integration" ] }, "integration": { "properties": { "integrationId": { "type": "string" }, "configurationId": { "type": "string" } }, "required": [ "configurationId", "integrationId" ], "type": "object" } }, "required": [ "integration", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "system" ] } }, "required": [ "type" ], "type": "object" } ] }, "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": { "id": { "type": "string" }, "alias": { "items": { "type": "string" }, "type": "array" }, "aliasAssigned": { "nullable": true, "oneOf": [ { "type": "number" }, { "type": "boolean", "enum": [ false, true ] } ] }, "aliasError": { "nullable": true, "properties": { "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "aliasFinal": { "nullable": true, "type": "string" }, "automaticAliases": { "items": { "type": "string" }, "type": "array" }, "branchMatcher": { "properties": { "type": { "type": "string", "enum": [ "endsWith", "equals", "startsWith" ], "description": "The type of matching to perform" }, "pattern": { "type": "string", "description": "The pattern to match against branch names" } }, "required": [ "pattern", "type" ], "type": "object" }, "buildingAt": { "type": "number" }, "builds": { "items": { "properties": { "use": { "type": "string" }, "src": { "type": "string" }, "dest": { "type": "string" } }, "required": [ "use" ], "type": "object" }, "type": "array" }, "checksConclusion": { "type": "string", "enum": [ "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 ] }, "name": { "type": "string" }, "meta": { "additionalProperties": { "type": "string" }, "type": "object" }, "monorepoManager": { "nullable": true, "type": "string" }, "oidcTokenClaims": { "properties": { "iss": { "type": "string" }, "sub": { "type": "string" }, "scope": { "type": "string" }, "aud": { "type": "string" }, "owner": { "type": "string" }, "owner_id": { "type": "string" }, "project": { "type": "string" }, "project_id": { "type": "string" }, "environment": { "type": "string" }, "custom_environment_id": { "type": "string" }, "mfe_group_ids": { "items": { "type": "string" }, "type": "array" }, "plan": { "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" }, "withCache": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "createdAt", "createdIn", "creator", "deploymentHostname", "id", "name", "plan", "private", "readyState", "type", "url", "userId" ], "type": "object" }, "domain": { "type": "string" }, "environment": { "type": "string", "enum": [ "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": { "id": { "type": "string" }, "canceledAt": { "nullable": true, "type": "number" }, "disabledAt": { "type": "number" }, "enabledAt": { "type": "number" }, "paidAt": { "type": "number" }, "sampleRatePercent": { "nullable": true, "type": "number" }, "spendLimitInDollars": { "nullable": true, "type": "number" } }, "required": [ "disabledAt", "enabledAt", "id" ], "type": "object" }, "appliedCve55182Migration": { "type": "boolean", "enum": [ false, true ] }, "speedInsights": { "properties": { "id": { "type": "string" }, "enabledAt": { "type": "number" }, "disabledAt": { "type": "number" }, "canceledAt": { "type": "number" }, "hasData": { "type": "boolean", "enum": [ false, true ] }, "paidAt": { "type": "number" } }, "required": [ "id" ], "type": "object" }, "autoExposeSystemEnvs": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomains": { "type": "boolean", "enum": [ false, true ] }, "autoAssignCustomDomainsUpdatedBy": { "type": "string" }, "buildCommand": { "nullable": true, "type": "string" }, "commandForIgnoringBuildStep": { "nullable": true, "type": "string" }, "connectConfigurations": { "nullable": true, "items": { "properties": { "envId": { "oneOf": [ { "type": "string" }, { "type": "string", "enum": [ "preview", "production" ] } ] }, "connectConfigurationId": { "type": "string" }, "dc": { "type": "string" }, "passive": { "type": "boolean", "enum": [ false, true ] }, "buildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "aws": { "properties": { "subnetIds": { "items": { "type": "string" }, "type": "array" }, "securityGroupId": { "type": "string" } }, "required": [ "subnetIds" ], "type": "object" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" } }, "required": [ "buildsEnabled", "connectConfigurationId", "createdAt", "envId", "passive", "updatedAt" ], "type": "object" }, "type": "array" }, "connectConfigurationId": { "nullable": true, "type": "string" }, "connectBuildsEnabled": { "type": "boolean", "enum": [ false, true ] }, "passiveConnectConfigurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "customerSupportCodeVisibility": { "type": "boolean", "enum": [ false, true ] }, "crons": { "properties": { "enabledAt": { "type": "number", "description": "The time the feature was enabled for this project. Note: It enables automatically with the first Deployment that outputs cronjobs." }, "disabledAt": { "nullable": true, "type": "number", "description": "The time the feature was disabled for this project." }, "updatedAt": { "type": "number" }, "deploymentId": { "nullable": true, "type": "string", "description": "The ID of the Deployment from which the definitions originated." }, "definitions": { "items": { "properties": { "host": { "type": "string", "description": "The hostname that should be used.", "example": "vercel.com" }, "path": { "type": "string", "description": "The path that should be called for the cronjob.", "example": "/api/crons/sync-something?hello=world" }, "schedule": { "type": "string", "description": "The cron expression.", "example": "0 0 * * *" }, "source": { "type": "string", "enum": [ "api" ], "description": "The origin of this definition. 'api' means created via the API. Undefined means it originated from a deployment (vercel.json)." }, "description": { "type": "string", "description": "A human-readable description of what this cron job does." }, "hostInferred": { "type": "boolean", "enum": [ false, true ], "description": "Whether the host was inferred from the production deployment URL rather than explicitly provided." } }, "required": [ "host", "path", "schedule" ], "type": "object" }, "type": "array" } }, "required": [ "definitions", "deploymentId", "disabledAt", "enabledAt", "updatedAt" ], "type": "object" }, "dataCache": { "properties": { "userDisabled": { "type": "boolean", "enum": [ false, true ] }, "storageSizeBytes": { "nullable": true, "type": "number" }, "unlimited": { "type": "boolean", "enum": [ false, true ] } }, "required": [ "userDisabled" ], "type": "object" }, "deploymentExpiration": { "properties": { "expirationDays": { "type": "number", "description": "Number of days to keep non-production deployments (mostly preview deployments) before soft deletion." }, "expirationDaysProduction": { "type": "number", "description": "Number of days to keep production deployments before soft deletion." }, "expirationDaysCanceled": { "type": "number", "description": "Number of days to keep canceled deployments before soft deletion." }, "expirationDaysErrored": { "type": "number", "description": "Number of days to keep errored deployments before soft deletion." }, "deploymentsToKeep": { "type": "number", "description": "Minimum number of production deployments to keep for this project, even if they are over the production expiration limit." } }, "type": "object", "description": "Retention policies for deployments. These are enforced at the project level, but we also maintain an instance of this at the team level as a default policy that gets applied to new projects." }, "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" } ] }, "devCommand": { "nullable": true, "type": "string" }, "directoryListing": { "type": "boolean", "enum": [ false, true ] }, "installCommand": { "nullable": true, "type": "string" }, "env": { "items": { "properties": { "target": { "oneOf": [ { "items": { "type": "string", "enum": [ "development", "development", "preview", "preview", "production" ] }, "type": "array" }, { "type": "string", "enum": [ "production", "preview", "development" ] } ] }, "type": { "type": "string", "enum": [ "encrypted", "plain", "secret", "sensitive", "system" ] }, "sunsetSecretId": { "type": "string", "description": "This is used to identify variables that have been migrated from type secret to sensitive." }, "legacyValue": { "type": "string", "description": "Legacy now-encryption ciphertext, present after migration swaps value/vsmValue" }, "decrypted": { "type": "boolean", "enum": [ false, true ] }, "value": { "type": "string" }, "vsmValue": { "type": "string" }, "id": { "type": "string" }, "key": { "type": "string" }, "configurationId": { "nullable": true, "type": "string" }, "createdAt": { "type": "number" }, "updatedAt": { "type": "number" }, "createdBy": { "nullable": true, "type": "string" }, "updatedBy": { "nullable": true, "type": "string" }, "gitBranch": { "type": "string" }, "visibility": { "type": "string", "enum": [ "config", "secret" ], "description": "User-facing config/secret model. When set, authoritative for new code paths when the env-var-config-secret-ui flag is enabled. Legacy rows omit this field; legacy rows omit it and callers fall back to existing `type` behavior." }, "edgeConfigId": { "nullable": true, "type": "string" }, "edgeConfigTokenId": { "nullable": true, "type": "string" }, "contentHint": { "nullable": true, "oneOf": [ { "properties": { "type": { "type": "string", "enum": [ "redis-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "redis-rest-api-read-only-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-read-write-token" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-store-id" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "blob-webhook-public-key" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-url-non-pooling" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-prisma-url" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-user" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-host" ] }, "storeId": { "type": "string" } }, "required": [ "storeId", "type" ], "type": "object" }, { "properties": { "type": { "type": "string", "enum": [ "postgres-password" ] }, "storeId": { "type": "string"