{ "openapi": "3.0.0", "paths": { "/v1/branches/{branch_id_or_ref}": { "get": { "description": "Fetches configurations of the specified database branch", "operationId": "v1-get-a-branch-config", "parameters": [ { "name": "branch_id_or_ref", "required": true, "in": "path", "description": "Branch ref or deprecated branch ID", "schema": { "example": "abcdefghijklmnopqrst", "oneOf": [ { "type": "string", "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "description": "Project ref", "example": "abcdefghijklmnopqrst" }, { "type": "string", "format": "uuid", "deprecated": true } ] } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchDetailResponse" } } } }, "500": { "description": "Failed to retrieve database branch" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["branching_production_read"] }, { "fga_permissions": ["branching_development_read"] } ], "summary": "Get database branch config", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:read", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:read" }, "patch": { "description": "Updates the configuration of the specified database branch", "operationId": "v1-update-a-branch-config", "parameters": [ { "name": "branch_id_or_ref", "required": true, "in": "path", "description": "Branch ref or deprecated branch ID", "schema": { "example": "abcdefghijklmnopqrst", "oneOf": [ { "type": "string", "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "description": "Project ref", "example": "abcdefghijklmnopqrst" }, { "type": "string", "format": "uuid", "deprecated": true } ] } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateBranchBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchResponse" } } } }, "500": { "description": "Failed to update database branch" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["branching_production_write"] }, { "fga_permissions": ["branching_development_write"] } ], "summary": "Update database branch config", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:write" }, "delete": { "description": "Deletes the specified database branch. By default, deletes immediately. Use force=false to schedule deletion with 1-hour grace period (only when soft deletion is enabled).", "operationId": "v1-delete-a-branch", "parameters": [ { "name": "branch_id_or_ref", "required": true, "in": "path", "description": "Branch ref or deprecated branch ID", "schema": { "example": "abcdefghijklmnopqrst", "oneOf": [ { "type": "string", "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "description": "Project ref", "example": "abcdefghijklmnopqrst" }, { "type": "string", "format": "uuid", "deprecated": true } ] } }, { "name": "force", "required": false, "in": "query", "description": "If set to false, schedule deletion with 1-hour grace period (only when soft deletion is enabled).", "schema": { "default": "true", "example": false, "type": "boolean" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchDeleteResponse" } } } }, "500": { "description": "Failed to delete database branch" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["branching_production_delete"] }, { "fga_permissions": ["branching_development_delete"] } ], "summary": "Delete a database branch", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:write" } }, "/v1/branches/{branch_id_or_ref}/push": { "post": { "description": "Pushes the specified database branch", "operationId": "v1-push-a-branch", "parameters": [ { "name": "branch_id_or_ref", "required": true, "in": "path", "description": "Branch ref or deprecated branch ID", "schema": { "example": "abcdefghijklmnopqrst", "oneOf": [ { "type": "string", "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "description": "Project ref", "example": "abcdefghijklmnopqrst" }, { "type": "string", "format": "uuid", "deprecated": true } ] } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchActionBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchUpdateResponse" } } } }, "500": { "description": "Failed to push database branch" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["branching_production_write"] }, { "fga_permissions": ["branching_development_write"] } ], "summary": "Pushes a database branch", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:write" } }, "/v1/branches/{branch_id_or_ref}/merge": { "post": { "description": "Merges the specified database branch", "operationId": "v1-merge-a-branch", "parameters": [ { "name": "branch_id_or_ref", "required": true, "in": "path", "description": "Branch ref or deprecated branch ID", "schema": { "example": "abcdefghijklmnopqrst", "oneOf": [ { "type": "string", "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "description": "Project ref", "example": "abcdefghijklmnopqrst" }, { "type": "string", "format": "uuid", "deprecated": true } ] } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchActionBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchUpdateResponse" } } } }, "500": { "description": "Failed to merge database branch" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["branching_production_write"] }, { "fga_permissions": ["branching_development_write"] } ], "summary": "Merges a database branch", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:write" } }, "/v1/branches/{branch_id_or_ref}/reset": { "post": { "description": "Resets the specified database branch", "operationId": "v1-reset-a-branch", "parameters": [ { "name": "branch_id_or_ref", "required": true, "in": "path", "description": "Branch ref or deprecated branch ID", "schema": { "example": "abcdefghijklmnopqrst", "oneOf": [ { "type": "string", "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "description": "Project ref", "example": "abcdefghijklmnopqrst" }, { "type": "string", "format": "uuid", "deprecated": true } ] } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchActionBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchUpdateResponse" } } } }, "500": { "description": "Failed to reset database branch" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["branching_production_write"] }, { "fga_permissions": ["branching_development_write"] } ], "summary": "Resets a database branch", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:write" } }, "/v1/branches/{branch_id_or_ref}/restore": { "post": { "description": "Cancels scheduled deletion and restores the branch to active state", "operationId": "v1-restore-a-branch", "parameters": [ { "name": "branch_id_or_ref", "required": true, "in": "path", "description": "Branch ref or deprecated branch ID", "schema": { "example": "abcdefghijklmnopqrst", "oneOf": [ { "type": "string", "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "description": "Project ref", "example": "abcdefghijklmnopqrst" }, { "type": "string", "format": "uuid", "deprecated": true } ] } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchRestoreResponse" } } } }, "500": { "description": "Failed to restore database branch" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["branching_production_write"] }, { "fga_permissions": ["branching_development_write"] } ], "summary": "Restore a scheduled branch deletion", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:write" } }, "/v1/branches/{branch_id_or_ref}/diff": { "get": { "description": "Diffs the specified database branch", "operationId": "v1-diff-a-branch", "parameters": [ { "name": "branch_id_or_ref", "required": true, "in": "path", "description": "Branch ref or deprecated branch ID", "schema": { "example": "abcdefghijklmnopqrst", "oneOf": [ { "type": "string", "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "description": "Project ref", "example": "abcdefghijklmnopqrst" }, { "type": "string", "format": "uuid", "deprecated": true } ] } }, { "name": "included_schemas", "required": false, "in": "query", "schema": { "example": "public,auth", "type": "string" } }, { "name": "pgdelta", "required": false, "in": "query", "description": "Use pg-delta instead of Migra for diffing when true", "schema": { "example": false, "type": "boolean" } } ], "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "" }, "500": { "description": "Failed to diff database branch" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["branching_production_write"] }, { "fga_permissions": ["branching_development_write"] } ], "summary": "[Beta] Diffs a database branch", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:write" } }, "/v1/projects": { "get": { "description": "Returns a list of all projects you've previously created.\n\nUse `/v1/organizations/{slug}/projects` instead when possible to get more precise results and pagination support.", "operationId": "v1-list-all-projects", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/V1ProjectWithDatabaseResponse" } } } } } }, "security": [{ "bearer": [] }, { "fga_permissions": ["projects_read"] }], "summary": "List all projects", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "projects:read" }, "post": { "operationId": "v1-create-a-project", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1CreateProjectBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1ProjectResponse" } } } } }, "security": [{ "bearer": [] }, { "fga_permissions": ["organization_projects_create"] }], "summary": "Create a project", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:write", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "projects:write" } }, "/v1/projects/available-regions": { "get": { "operationId": "v1-get-available-regions", "parameters": [ { "name": "organization_slug", "required": true, "in": "query", "description": "Slug of your organization", "schema": { "example": "tsrqponmlkjihgfedcba", "type": "string" } }, { "name": "continent", "required": false, "in": "query", "description": "Continent code to determine regional recommendations: NA (North America), SA (South America), EU (Europe), AF (Africa), AS (Asia), OC (Oceania), AN (Antarctica)", "schema": { "example": "NA", "type": "string", "enum": ["NA", "SA", "EU", "AF", "AS", "OC", "AN"] } }, { "name": "desired_instance_size", "required": false, "in": "query", "description": "Desired instance size. Omit this field to always default to the smallest possible size.", "schema": { "type": "string", "enum": [ "nano", "micro", "small", "medium", "large", "xlarge", "2xlarge", "4xlarge", "8xlarge", "12xlarge", "16xlarge", "24xlarge", "24xlarge_optimized_memory", "24xlarge_optimized_cpu", "24xlarge_high_memory", "48xlarge", "48xlarge_optimized_memory", "48xlarge_optimized_cpu", "48xlarge_high_memory" ] } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegionsInfo" } } } } }, "security": [{ "bearer": [] }], "summary": "[Beta] Gets the list of available regions that can be used for a new project", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: organizations:read", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "organizations:read" } }, "/v1/organizations": { "get": { "description": "Returns a list of organizations that you currently belong to.", "operationId": "v1-list-all-organizations", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/OrganizationResponseV1" } } } } }, "500": { "description": "Unexpected error listing organizations" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["organizations_read"] }], "summary": "List all organizations", "tags": ["Organizations"], "x-badges": [{ "name": "OAuth scope: organizations:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "organizations:read" }, "post": { "operationId": "v1-create-an-organization", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationV1" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationResponseV1" } } } }, "500": { "description": "Unexpected error creating an organization" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["organizations_create"] }], "summary": "Create an organization", "tags": ["Organizations"], "x-endpoint-owners": ["management-api", "billing"] } }, "/v1/oauth/authorize": { "get": { "operationId": "v1-authorize-user", "parameters": [ { "name": "client_id", "required": true, "in": "query", "schema": { "format": "uuid", "example": "66666666-6666-4666-8666-666666666666", "type": "string" } }, { "name": "response_type", "required": true, "in": "query", "schema": { "example": "code", "type": "string", "enum": ["code", "token", "id_token token"] } }, { "name": "redirect_uri", "required": true, "in": "query", "schema": { "example": "https://app.acme.com/auth/callback", "type": "string" } }, { "name": "scope", "required": false, "in": "query", "schema": { "example": "projects:read projects:write", "type": "string" } }, { "name": "state", "required": false, "in": "query", "schema": { "example": "st_9f4d3a206b2e4a7e8c91", "type": "string" } }, { "name": "response_mode", "required": false, "in": "query", "schema": { "example": "query", "type": "string" } }, { "name": "code_challenge", "required": false, "in": "query", "schema": { "example": "Z_P4EKbGwIkA01e3Y5fp4tMCvn_Ae5nUw7qY7XwkTrQ", "type": "string" } }, { "name": "code_challenge_method", "required": false, "in": "query", "schema": { "example": "S256", "type": "string", "enum": ["plain", "sha256", "S256"] } }, { "name": "organization_slug", "required": false, "in": "query", "description": "Organization slug", "schema": { "pattern": "^[\\w-]+$", "example": "tsrqponmlkjihgfedcba", "type": "string" } }, { "name": "resource", "required": false, "in": "query", "description": "Resource indicator for MCP (Model Context Protocol) clients", "schema": { "format": "uri", "type": "string" } } ], "responses": { "204": { "description": "" } }, "security": [{ "oauth2": ["read"] }], "summary": "[Beta] Authorize user through oauth", "tags": ["OAuth"], "x-endpoint-owners": ["auth", "management-api"] } }, "/v1/oauth/token": { "post": { "operationId": "v1-exchange-oauth-token", "parameters": [], "requestBody": { "required": true, "content": { "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/OAuthTokenBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthTokenResponse" } } } } }, "security": [{ "oauth2": ["write"] }], "summary": "[Beta] Exchange auth code for user's access and refresh token", "tags": ["OAuth"], "x-endpoint-owners": ["auth", "management-api"] } }, "/v1/oauth/revoke": { "post": { "operationId": "v1-revoke-token", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthRevokeTokenBody" } } } }, "responses": { "204": { "description": "" } }, "security": [{ "oauth2": ["write"] }], "summary": "[Beta] Revoke oauth app authorization and it's corresponding tokens", "tags": ["OAuth"], "x-endpoint-owners": ["auth", "management-api"] } }, "/v1/oauth/authorize/project-claim": { "get": { "description": "Initiates the OAuth authorization flow for the specified provider. After successful authentication, the user can claim ownership of the specified project.", "operationId": "v1-oauth-authorize-project-claim", "parameters": [ { "name": "project_ref", "required": true, "in": "query", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "client_id", "required": true, "in": "query", "schema": { "format": "uuid", "example": "66666666-6666-4666-8666-666666666666", "type": "string" } }, { "name": "response_type", "required": true, "in": "query", "schema": { "example": "code", "type": "string", "enum": ["code", "token", "id_token token"] } }, { "name": "redirect_uri", "required": true, "in": "query", "schema": { "example": "https://app.acme.com/auth/callback", "type": "string" } }, { "name": "state", "required": false, "in": "query", "schema": { "example": "st_9f4d3a206b2e4a7e8c91", "type": "string" } }, { "name": "response_mode", "required": false, "in": "query", "schema": { "example": "query", "type": "string" } }, { "name": "code_challenge", "required": false, "in": "query", "schema": { "example": "Z_P4EKbGwIkA01e3Y5fp4tMCvn_Ae5nUw7qY7XwkTrQ", "type": "string" } }, { "name": "code_challenge_method", "required": false, "in": "query", "schema": { "example": "S256", "type": "string", "enum": ["plain", "sha256", "S256"] } } ], "responses": { "204": { "description": "" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["organization_admin_write", "project_admin_write"] } ], "summary": "Authorize user through oauth and claim a project", "tags": ["OAuth"], "x-endpoint-owners": ["management-api"] } }, "/v1/snippets": { "get": { "operationId": "v1-list-all-snippets", "parameters": [ { "name": "project_ref", "required": false, "in": "query", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "cursor", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "limit", "required": false, "in": "query", "schema": { "type": "string", "minimum": 1, "maximum": 100 } }, { "name": "sort_by", "required": false, "in": "query", "schema": { "enum": ["name", "inserted_at"], "type": "string" } }, { "name": "sort_order", "required": false, "in": "query", "schema": { "enum": ["asc", "desc"], "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SnippetList" } } } }, "500": { "description": "Failed to list user's SQL snippets" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["snippets_read"] }], "summary": "Lists SQL snippets for the logged in user", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "database:read" } }, "/v1/snippets/{id}": { "get": { "operationId": "v1-get-a-snippet", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "44444444-4444-4444-8444-444444444444", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SnippetResponse" } } } }, "500": { "description": "Failed to retrieve SQL snippet" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["snippets_read"] }], "summary": "Gets a specific SQL snippet", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "database:read" } }, "/v1/profile": { "get": { "operationId": "v1-get-profile", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1ProfileResponse" } } } } }, "security": [{ "bearer": [] }], "summary": "Gets the user's profile", "tags": ["Profile"], "x-endpoint-owners": ["management-api"] } }, "/v1/projects/{ref}/actions": { "get": { "description": "Returns a paginated list of action runs of the specified project.", "operationId": "v1-list-action-runs", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "offset", "required": false, "in": "query", "schema": { "minimum": 0, "example": 0, "type": "number" } }, { "name": "limit", "required": false, "in": "query", "schema": { "minimum": 10, "example": 20, "type": "number" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListActionRunResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to list action runs" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["action_runs_read"] }], "summary": "List all action runs", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:read", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:read" }, "head": { "description": "Returns the total number of action runs of the specified project.", "operationId": "v1-count-action-runs", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "headers": { "X-Total-Count": { "schema": { "type": "integer", "format": "int64", "minimum": 0 }, "description": "total count value" } }, "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to count action runs" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["action_runs_read"] }], "summary": "Count the number of action runs", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:read", "position": "after" }], "x-oauth-scope": "environment:read" } }, "/v1/projects/{ref}/actions/{run_id}": { "get": { "description": "Returns the current status of the specified action run.", "operationId": "v1-get-action-run", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "run_id", "required": true, "in": "path", "description": "Action Run ID", "schema": { "example": "run_01hq3q9m7y5q7e4a7x2c8m1p4n", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionRunResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get action run status" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["action_runs_read"] }], "summary": "Get the status of an action run", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:read", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:read" } }, "/v1/projects/{ref}/actions/{run_id}/status": { "patch": { "description": "Updates the status of an ongoing action run.", "operationId": "v1-update-action-run-status", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "run_id", "required": true, "in": "path", "description": "Action Run ID", "schema": { "example": "run_01hq3q9m7y5q7e4a7x2c8m1p4n", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRunStatusBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRunStatusResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update action run status" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["action_runs_write"] }], "summary": "Update the status of an action run", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:write" } }, "/v1/projects/{ref}/actions/{run_id}/logs": { "get": { "description": "Returns the logs from the specified action run.", "operationId": "v1-get-action-run-logs", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "run_id", "required": true, "in": "path", "description": "Action Run ID", "schema": { "example": "run_01hq3q9m7y5q7e4a7x2c8m1p4n", "type": "string" } } ], "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get action run logs" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["action_runs_read"] }], "summary": "Get the logs of an action run", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:read", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:read" } }, "/v1/projects/{ref}/api-keys": { "get": { "operationId": "v1-get-project-api-keys", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "reveal", "required": false, "in": "query", "description": "Boolean string, true or false", "schema": { "example": true, "type": "boolean" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ApiKeyResponse" } } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["api_gateway_keys_read"] }], "summary": "Get project api keys", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:read", "position": "after" }], "x-endpoint-owners": ["auth", "management-api"], "x-oauth-scope": "secrets:read" }, "post": { "operationId": "v1-create-project-api-key", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "reveal", "required": false, "in": "query", "description": "Boolean string, true or false", "schema": { "example": true, "type": "boolean" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateApiKeyBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiKeyResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["api_gateway_keys_write"] }], "summary": "Creates a new API key for the project", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:write", "position": "after" }], "x-endpoint-owners": ["auth", "management-api"], "x-oauth-scope": "secrets:write" } }, "/v1/projects/{ref}/api-keys/legacy": { "get": { "operationId": "v1-get-project-legacy-api-keys", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegacyApiKeysResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["api_gateway_keys_read"] }], "summary": "Check whether JWT based legacy (anon, service_role) API keys are enabled. This API endpoint will be removed in the future, check for HTTP 404 Not Found.", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:read", "position": "after" }], "x-endpoint-owners": ["auth", "management-api"], "x-oauth-scope": "secrets:read" }, "put": { "operationId": "v1-update-project-legacy-api-keys", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "enabled", "required": true, "in": "query", "description": "Boolean string, true or false", "schema": { "example": true, "type": "boolean" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LegacyApiKeysResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["api_gateway_keys_write"] }], "summary": "Disable or re-enable JWT based legacy (anon, service_role) API keys. This API endpoint will be removed in the future, check for HTTP 404 Not Found.", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:write", "position": "after" }], "x-endpoint-owners": ["auth", "management-api"], "x-oauth-scope": "secrets:write" } }, "/v1/projects/{ref}/api-keys/{id}": { "patch": { "operationId": "v1-update-project-api-key", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "22222222-2222-4222-8222-222222222222", "type": "string" } }, { "name": "reveal", "required": false, "in": "query", "description": "Boolean string, true or false", "schema": { "example": true, "type": "boolean" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateApiKeyBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiKeyResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["api_gateway_keys_write"] }], "summary": "Updates an API key for the project", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:write", "position": "after" }], "x-endpoint-owners": ["auth", "management-api"], "x-oauth-scope": "secrets:write" }, "get": { "operationId": "v1-get-project-api-key", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "22222222-2222-4222-8222-222222222222", "type": "string" } }, { "name": "reveal", "required": false, "in": "query", "description": "Boolean string, true or false", "schema": { "example": true, "type": "boolean" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiKeyResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["api_gateway_keys_read"] }], "summary": "Get API key", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:read", "position": "after" }], "x-endpoint-owners": ["auth", "management-api"], "x-oauth-scope": "secrets:read" }, "delete": { "operationId": "v1-delete-project-api-key", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "22222222-2222-4222-8222-222222222222", "type": "string" } }, { "name": "reveal", "required": false, "in": "query", "description": "Boolean string, true or false", "schema": { "example": true, "type": "boolean" } }, { "name": "was_compromised", "required": false, "in": "query", "description": "Boolean string, true or false", "schema": { "example": false, "type": "boolean" } }, { "name": "reason", "required": false, "in": "query", "schema": { "example": "rotating_key", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiKeyResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["api_gateway_keys_write"] }], "summary": "Deletes an API key for the project", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:write", "position": "after" }], "x-endpoint-owners": ["auth", "management-api"], "x-oauth-scope": "secrets:write" } }, "/v1/projects/{ref}/branches": { "get": { "description": "Returns all database branches of the specified project.", "operationId": "v1-list-all-branches", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/BranchResponse" } } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve database branches" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["branching_production_read"] }, { "fga_permissions": ["branching_development_read"] } ], "summary": "List all database branches", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:read", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:read" }, "post": { "description": "Creates a database branch from the specified project.", "operationId": "v1-create-a-branch", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateBranchBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to create database branch" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["branching_production_create"] }, { "fga_permissions": ["branching_development_create"] } ], "summary": "Create a database branch", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:write" }, "delete": { "description": "Disables preview branching for the specified project", "operationId": "v1-disable-preview-branching", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to disable preview branching" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["branching_production_delete"] }], "summary": "Disables preview branching", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:write" } }, "/v1/projects/{ref}/branches/{name}": { "get": { "description": "Fetches the specified database branch by its name.", "operationId": "v1-get-a-branch", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "name", "required": true, "in": "path", "schema": { "example": "preview-login-page", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to fetch database branch" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["branching_production_read"] }, { "fga_permissions": ["branching_development_read"] } ], "summary": "Get a database branch", "tags": ["Environments"], "x-badges": [{ "name": "OAuth scope: environment:read", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "environment:read" } }, "/v1/projects/{ref}/custom-hostname": { "get": { "operationId": "v1-get-hostname-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateCustomHostnameResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's custom hostname config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["custom_domain_read"] }], "summary": "[Beta] Gets project's custom hostname config", "tags": ["Domains"], "x-badges": [{ "name": "OAuth scope: domains:read", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "domains:read" }, "delete": { "operationId": "v1-Delete hostname config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to delete project custom hostname configuration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["custom_domain_write"] }], "summary": "[Beta] Deletes a project's custom hostname configuration", "tags": ["Domains"], "x-badges": [{ "name": "OAuth scope: domains:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "domains:write" } }, "/v1/projects/{ref}/custom-hostname/initialize": { "post": { "operationId": "v1-update-hostname-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateCustomHostnameBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateCustomHostnameResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project custom hostname configuration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["custom_domain_write"] }], "summary": "[Beta] Updates project's custom hostname configuration", "tags": ["Domains"], "x-badges": [{ "name": "OAuth scope: domains:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "domains:write" } }, "/v1/projects/{ref}/custom-hostname/reverify": { "post": { "operationId": "v1-verify-dns-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateCustomHostnameResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to verify project custom hostname configuration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["custom_domain_write"] }], "summary": "[Beta] Attempts to verify the DNS configuration for project's custom hostname configuration", "tags": ["Domains"], "x-badges": [{ "name": "OAuth scope: domains:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "domains:write" } }, "/v1/projects/{ref}/custom-hostname/activate": { "post": { "operationId": "v1-activate-custom-hostname", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateCustomHostnameResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to activate project custom hostname configuration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["custom_domain_write"] }], "summary": "[Beta] Activates a custom hostname for a project.", "tags": ["Domains"], "x-badges": [{ "name": "OAuth scope: domains:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "domains:write" } }, "/v1/projects/{ref}/jit-access": { "get": { "operationId": "v1-get-jit-access-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JitAccessResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's JIT access config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_read"] }], "summary": "[Beta] Get project's just-in-time access configuration.", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["security", "management-api"], "x-oauth-scope": "database:read" }, "put": { "operationId": "v1-update-jit-access-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JitAccessRequestRequest" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JitAccessResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project's just-in-time access configuration." } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_write"] }], "summary": "[Beta] Update project's just-in-time access configuration.", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["security", "management-api"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/network-bans/retrieve": { "post": { "operationId": "v1-list-all-network-bans", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkBanResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's network bans" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_network_bans_read"] }], "summary": "[Beta] Gets project's network bans", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:read", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "projects:read" } }, "/v1/projects/{ref}/network-bans/retrieve/enriched": { "post": { "operationId": "v1-list-all-network-bans-enriched", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkBanResponseEnriched" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's enriched network bans" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_network_bans_read"] }], "summary": "[Beta] Gets project's network bans with additional information about which databases they affect", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:read", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "projects:read" } }, "/v1/projects/{ref}/network-bans": { "delete": { "operationId": "v1-delete-network-bans", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RemoveNetworkBanRequest" } } } }, "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to remove network bans." } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_network_bans_write"] }], "summary": "[Beta] Remove network bans.", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:write", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "projects:write" } }, "/v1/projects/{ref}/network-restrictions": { "get": { "operationId": "v1-get-network-restrictions", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkRestrictionsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's network restrictions" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["database_network_restrictions_read"] } ], "summary": "[Beta] Gets project's network restrictions", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:read", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "projects:read" }, "patch": { "operationId": "v1-patch-network-restrictions", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkRestrictionsPatchRequest" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkRestrictionsV2Response" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project network restrictions" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["database_network_restrictions_write"] } ], "summary": "[Alpha] Updates project's network restrictions by adding or removing CIDRs", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "projects:write" } }, "/v1/projects/{ref}/network-restrictions/apply": { "post": { "operationId": "v1-update-network-restrictions", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkRestrictionsRequest" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkRestrictionsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project network restrictions" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["database_network_restrictions_write"] } ], "summary": "[Beta] Updates project's network restrictions", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "projects:write" } }, "/v1/projects/{ref}/pgsodium": { "get": { "operationId": "v1-get-pgsodium-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PgsodiumConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's pgsodium config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_write"] }], "summary": "[Beta] Gets project's pgsodium config", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:read", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "secrets:read" }, "put": { "operationId": "v1-update-pgsodium-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdatePgsodiumConfigBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PgsodiumConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project's pgsodium config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_write"] }], "summary": "[Beta] Updates project's pgsodium config. Updating the root_key can cause all data encrypted with the older key to become inaccessible.", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:write", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "secrets:write" } }, "/v1/projects/{ref}/postgrest": { "get": { "operationId": "v1-get-postgrest-service-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PostgrestConfigWithJWTSecretResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's postgrest config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["data_api_config_read"] }], "summary": "Gets project's postgrest config", "tags": ["Rest"], "x-badges": [{ "name": "OAuth scope: rest:read", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "rest:read" }, "patch": { "operationId": "v1-update-postgrest-service-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1UpdatePostgrestConfigBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1PostgrestConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project's postgrest config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["data_api_config_write"] }], "summary": "Updates project's postgrest config", "tags": ["Rest"], "x-badges": [{ "name": "OAuth scope: rest:write", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "rest:write" } }, "/v1/projects/{ref}": { "get": { "operationId": "v1-get-project", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1ProjectWithDatabaseResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_read"] }], "summary": "Gets a specific project that belongs to the authenticated user", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "projects:read" }, "delete": { "operationId": "v1-delete-a-project", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1ProjectRefResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_write"] }], "summary": "Deletes the given project", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:write", "position": "after" }], "x-endpoint-owners": ["management-api", "infra", "dev-workflows"], "x-oauth-scope": "projects:write" }, "patch": { "operationId": "v1-update-a-project", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1UpdateProjectBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1ProjectRefResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_write"] }], "summary": "Updates the given project", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:write", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "projects:write" } }, "/v1/projects/{ref}/secrets": { "get": { "description": "Returns all secrets you've previously added to the specified project.", "operationId": "v1-list-all-secrets", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SecretResponse" } } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's secrets" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["edge_functions_secrets_read"] }], "summary": "List all secrets", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:read", "position": "after" }], "x-endpoint-owners": ["functions"], "x-oauth-scope": "secrets:read" }, "post": { "description": "Creates multiple secrets and adds them to the specified project.", "operationId": "v1-bulk-create-secrets", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSecretBody" } } } }, "responses": { "201": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to create project's secrets" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["edge_functions_secrets_write"] }], "summary": "Bulk create secrets", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:write", "position": "after" }], "x-endpoint-owners": ["functions"], "x-oauth-scope": "secrets:write" }, "delete": { "description": "Deletes all secrets with the given names from the specified project", "operationId": "v1-bulk-delete-secrets", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteSecretsBody" } } } }, "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to delete secrets with given names" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["edge_functions_secrets_write"] }], "summary": "Bulk delete secrets", "tags": ["Secrets"], "x-badges": [{ "name": "OAuth scope: secrets:write", "position": "after" }], "x-endpoint-owners": ["functions"], "x-oauth-scope": "secrets:write" } }, "/v1/projects/{ref}/ssl-enforcement": { "get": { "operationId": "v1-get-ssl-enforcement-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SslEnforcementResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's SSL enforcement config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_ssl_config_read"] }], "summary": "[Beta] Get project's SSL enforcement configuration.", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "database:read" }, "put": { "operationId": "v1-update-ssl-enforcement-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SslEnforcementRequest" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SslEnforcementResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project's SSL enforcement configuration." } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_ssl_config_write"] }], "summary": "[Beta] Update project's SSL enforcement configuration.", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/types/typescript": { "get": { "description": "Returns the TypeScript types of your schema for use with supabase-js.", "operationId": "v1-generate-typescript-types", "parameters": [ { "name": "included_schemas", "required": false, "in": "query", "schema": { "default": "public", "example": "public,auth", "type": "string" } }, { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TypescriptResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to generate TypeScript types" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_read"] }], "summary": "Generate TypeScript types", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "database:read" } }, "/v1/projects/{ref}/vanity-subdomain": { "get": { "operationId": "v1-get-vanity-subdomain-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VanitySubdomainConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get project vanity subdomain configuration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["vanity_subdomain_read"] }], "summary": "[Beta] Gets current vanity subdomain config", "tags": ["Domains"], "x-badges": [{ "name": "OAuth scope: domains:read", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "domains:read" }, "delete": { "operationId": "v1-deactivate-vanity-subdomain-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to delete project vanity subdomain configuration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["vanity_subdomain_write"] }], "summary": "[Beta] Deletes a project's vanity subdomain configuration", "tags": ["Domains"], "x-badges": [{ "name": "OAuth scope: domains:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "domains:write" } }, "/v1/projects/{ref}/vanity-subdomain/check-availability": { "post": { "operationId": "v1-check-vanity-subdomain-availability", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VanitySubdomainBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubdomainAvailabilityResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to check project vanity subdomain configuration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["vanity_subdomain_write"] }], "summary": "[Beta] Checks vanity subdomain availability", "tags": ["Domains"], "x-badges": [{ "name": "OAuth scope: domains:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "domains:write" } }, "/v1/projects/{ref}/vanity-subdomain/activate": { "post": { "operationId": "v1-activate-vanity-subdomain-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VanitySubdomainBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActivateVanitySubdomainResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to activate project vanity subdomain configuration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["vanity_subdomain_write"] }], "summary": "[Beta] Activates a vanity subdomain for a project.", "tags": ["Domains"], "x-badges": [{ "name": "OAuth scope: domains:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "domains:write" } }, "/v1/projects/{ref}/upgrade": { "post": { "operationId": "v1-upgrade-postgres-version", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpgradeDatabaseBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectUpgradeInitiateResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to initiate project upgrade" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["project_admin_write", "database_write"] } ], "summary": "[Beta] Upgrades the project's Postgres version", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:write", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "projects:write" } }, "/v1/projects/{ref}/upgrade/eligibility": { "get": { "operationId": "v1-get-postgres-upgrade-eligibility", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectUpgradeEligibilityResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to determine project upgrade eligibility" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["project_admin_read", "database_read"] } ], "summary": "[Beta] Returns the project's eligibility for upgrades", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:read", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "projects:read" } }, "/v1/projects/{ref}/upgrade/status": { "get": { "operationId": "v1-get-postgres-upgrade-status", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "tracking_id", "required": false, "in": "query", "schema": { "example": "9f4d3a20-6b2e-4a7e-8c91-1d5f3e7a2b4c", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DatabaseUpgradeStatusResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project upgrade status" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["project_admin_read", "database_read"] } ], "summary": "[Beta] Gets the latest status of the project's upgrade", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:read", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "projects:read" } }, "/v1/projects/{ref}/readonly": { "get": { "operationId": "v1-get-readonly-mode-status", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadOnlyStatusResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get project readonly mode status" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_readonly_config_read"] }], "summary": "Returns project's readonly mode status", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["management-api", "infra", "support-tooling"], "x-oauth-scope": "database:read" } }, "/v1/projects/{ref}/readonly/temporary-disable": { "post": { "operationId": "v1-disable-readonly-mode-temporarily", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "201": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to disable project's readonly mode" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_readonly_config_write"] }], "summary": "Disables project's readonly mode for the next 15 minutes", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["management-api", "infra", "support-tooling"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/read-replicas/setup": { "post": { "operationId": "v1-setup-a-read-replica", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetUpReadReplicaBody" } } } }, "responses": { "201": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to set up read replica" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["infra_read_replicas_write"] }], "summary": "[Beta] Set up a read replica", "tags": ["Database"], "x-endpoint-owners": ["management-api", "infra"] } }, "/v1/projects/{ref}/read-replicas/remove": { "post": { "operationId": "v1-remove-a-read-replica", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RemoveReadReplicaBody" } } } }, "responses": { "201": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to remove read replica" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["infra_read_replicas_write"] }], "summary": "[Beta] Remove a read replica", "tags": ["Database"], "x-endpoint-owners": ["management-api", "infra"] } }, "/v1/projects/{ref}/health": { "get": { "operationId": "v1-get-services-health", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "services", "required": true, "in": "query", "schema": { "example": ["auth", "rest"], "type": "array", "items": { "type": "string", "enum": [ "auth", "db", "db_postgres_user", "pooler", "realtime", "rest", "storage", "pg_bouncer" ] } } }, { "name": "timeout_ms", "required": false, "in": "query", "schema": { "minimum": 0, "maximum": 10000, "example": 2000, "type": "integer" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/V1ServiceHealthResponse" } } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's service health status" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_read"] }], "summary": "Gets project's service health status", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:read", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "projects:read" } }, "/v1/projects/{ref}/config/auth/signing-keys/legacy": { "post": { "operationId": "v1-create-legacy-signing-key", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SigningKeyResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_signing_keys_write"] }], "summary": "Set up the project's existing JWT secret as an in_use JWT signing key. This endpoint will be removed in the future always check for HTTP 404 Not Found.", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: secrets:write", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "secrets:write" }, "get": { "operationId": "v1-get-legacy-signing-key", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SigningKeyResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_signing_keys_read"] }], "summary": "Get the signing key information for the JWT secret imported as signing key for this project. This endpoint will be removed in the future, check for HTTP 404 Not Found.", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: secrets:read", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "secrets:read" } }, "/v1/projects/{ref}/config/auth/signing-keys": { "post": { "operationId": "v1-create-project-signing-key", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSigningKeyBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SigningKeyResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_signing_keys_write"] }], "summary": "Create a new signing key for the project in standby status", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: secrets:write", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "secrets:write" }, "get": { "operationId": "v1-get-project-signing-keys", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SigningKeysResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_signing_keys_read"] }], "summary": "List all signing keys for the project", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: secrets:read", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "secrets:read" } }, "/v1/projects/{ref}/config/auth/signing-keys/{id}": { "get": { "operationId": "v1-get-project-signing-key", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "33333333-3333-4333-8333-333333333333", "type": "string" } }, { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SigningKeyResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_signing_keys_read"] }], "summary": "Get information about a signing key", "tags": ["Auth"], "x-endpoint-owners": ["auth"] }, "delete": { "operationId": "v1-remove-project-signing-key", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "33333333-3333-4333-8333-333333333333", "type": "string" } }, { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SigningKeyResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_signing_keys_write"] }], "summary": "Remove a signing key from a project. Only possible if the key has been in revoked status for a while.", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: secrets:write", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "secrets:write" }, "patch": { "operationId": "v1-update-project-signing-key", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "33333333-3333-4333-8333-333333333333", "type": "string" } }, { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSigningKeyBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SigningKeyResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_signing_keys_write"] }], "summary": "Update a signing key, mainly its status", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: secrets:write", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "secrets:write" } }, "/v1/projects/{ref}/config/auth": { "get": { "operationId": "v1-get-auth-service-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's auth config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_config_read"] }], "summary": "Gets project's auth config", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: auth:read", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "auth:read" }, "patch": { "operationId": "v1-update-auth-service-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAuthConfigBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project's auth config" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["auth_config_write", "project_admin_write"] } ], "summary": "Updates a project's auth config", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: auth:write", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "auth:write" } }, "/v1/projects/{ref}/config/auth/third-party-auth": { "post": { "operationId": "v1-create-project-tpa-integration", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateThirdPartyAuthBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ThirdPartyAuth" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_config_write"] }], "summary": "Creates a new third-party auth integration", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: auth:write", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "auth:write" }, "get": { "operationId": "v1-list-project-tpa-integrations", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ThirdPartyAuth" } } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_config_read"] }], "summary": "Lists all third-party auth integrations", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: auth:read", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "auth:read" } }, "/v1/projects/{ref}/config/auth/third-party-auth/{tpa_id}": { "delete": { "operationId": "v1-delete-project-tpa-integration", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "tpa_id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "88888888-8888-4888-8888-888888888888", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ThirdPartyAuth" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_config_write"] }], "summary": "Removes a third-party auth integration", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: auth:write", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "auth:write" }, "get": { "operationId": "v1-get-project-tpa-integration", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "tpa_id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "88888888-8888-4888-8888-888888888888", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ThirdPartyAuth" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_config_read"] }], "summary": "Get a third-party integration", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: auth:read", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "auth:read" } }, "/v1/projects/{ref}/pause": { "post": { "operationId": "v1-pause-a-project", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_write"] }], "summary": "Pauses the given project", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "projects:write" } }, "/v1/projects/{ref}/restore": { "get": { "operationId": "v1-list-available-restore-versions", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetProjectAvailableRestoreVersionsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_read"] }], "summary": "Lists available restore versions for the given project", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:read", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "projects:read" }, "post": { "operationId": "v1-restore-a-project", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_write"] }], "summary": "Restores the given project", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:write", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "projects:write" } }, "/v1/projects/{ref}/restore/cancel": { "post": { "operationId": "v1-cancel-a-project-restoration", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_write"] }], "summary": "Cancels the given project restoration", "tags": ["Projects"], "x-badges": [{ "name": "OAuth scope: projects:write", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "projects:write" } }, "/v1/projects/{ref}/billing/addons": { "get": { "description": "Returns the billing addons that are currently applied, including the active compute instance size, and lists every addon option that can be provisioned with pricing metadata.", "operationId": "v1-list-project-addons", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListProjectAddonsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to list project addons" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["infra_add_ons_read"] }], "summary": "List billing addons and compute instance selections", "tags": ["Billing"], "x-endpoint-owners": ["billing"] }, "patch": { "description": "Selects an addon variant, for example scaling the project’s compute instance up or down, and applies it to the project.", "operationId": "v1-apply-project-addon", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplyProjectAddonBody" } } } }, "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to apply project addon" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["infra_add_ons_write"] }], "summary": "Apply or update billing addons, including compute instance size", "tags": ["Billing"], "x-endpoint-owners": ["billing"] } }, "/v1/projects/{ref}/billing/addons/{addon_variant}": { "delete": { "description": "Disables the selected addon variant, including rolling the compute instance back to its previous size.", "operationId": "v1-remove-project-addon", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "addon_variant", "required": true, "in": "path", "schema": { "example": "pitr_7", "oneOf": [ { "type": "string", "enum": [ "ci_micro", "ci_small", "ci_medium", "ci_large", "ci_xlarge", "ci_2xlarge", "ci_4xlarge", "ci_8xlarge", "ci_12xlarge", "ci_16xlarge", "ci_24xlarge", "ci_24xlarge_optimized_cpu", "ci_24xlarge_optimized_memory", "ci_24xlarge_high_memory", "ci_48xlarge", "ci_48xlarge_optimized_cpu", "ci_48xlarge_optimized_memory", "ci_48xlarge_high_memory" ] }, { "type": "string", "enum": ["cd_default"] }, { "type": "string", "enum": ["pitr_7", "pitr_14", "pitr_28"] }, { "type": "string", "enum": ["ipv4_default"] } ] } } ], "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to remove project addon" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["infra_add_ons_write"] }], "summary": "Remove billing addons or revert compute instance sizing", "tags": ["Billing"], "x-endpoint-owners": ["billing"] } }, "/v1/projects/{ref}/claim-token": { "get": { "operationId": "v1-get-project-claim-token", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectClaimTokenResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["project_admin_read"] }], "summary": "Gets project claim token", "tags": ["Projects"], "x-endpoint-owners": ["management-api"], "x-internal": true }, "post": { "operationId": "v1-create-project-claim-token", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateProjectClaimTokenResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["organization_admin_write", "project_admin_write"] } ], "summary": "Creates project claim token", "tags": ["Projects"], "x-endpoint-owners": ["management-api"], "x-internal": true }, "delete": { "operationId": "v1-delete-project-claim-token", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "204": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["organization_admin_write", "project_admin_write"] } ], "summary": "Revokes project claim token", "tags": ["Projects"], "x-endpoint-owners": ["management-api"], "x-internal": true } }, "/v1/projects/{ref}/advisors/performance": { "get": { "deprecated": true, "description": "This is an **experimental** endpoint. It is subject to change or removal in future versions. Use it with caution, as it may not remain supported or stable.", "operationId": "v1-get-performance-advisors", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1ProjectAdvisorsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["advisors_read"] }], "summary": "Gets project performance advisors.", "tags": ["Advisors"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "database:read" } }, "/v1/projects/{ref}/advisors/security": { "get": { "deprecated": true, "description": "This is an **experimental** endpoint. It is subject to change or removal in future versions. Use it with caution, as it may not remain supported or stable.", "operationId": "v1-get-security-advisors", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "lint_type", "required": false, "in": "query", "schema": { "example": "sql", "type": "string", "enum": ["sql"] } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1ProjectAdvisorsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["advisors_read"] }], "summary": "Gets project security advisors.", "tags": ["Advisors"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "database:read" } }, "/v1/projects/{ref}/analytics/endpoints/logs.all": { "get": { "description": "Executes a SQL query on the project's logs.\n\nEither the `iso_timestamp_start` and `iso_timestamp_end` parameters must be provided.\nIf both are not provided, only the last 1 minute of logs will be queried.\nThe timestamp range must be no more than 24 hours and is rounded to the nearest minute. If the range is more than 24 hours, a validation error will be thrown.\n\nNote: Unless the `sql` parameter is provided, only edge_logs will be queried. See the [log query docs](/docs/guides/telemetry/logs?queryGroups=product&product=postgres&queryGroups=source&source=edge_logs#querying-with-the-logs-explorer:~:text=logs%20from%20the-,Sources,-drop%2Ddown%3A) for all available sources. \n", "operationId": "v1-get-project-logs", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "sql", "required": false, "in": "query", "description": "Custom SQL query to execute on the logs. See [querying logs](/docs/guides/telemetry/logs?queryGroups=product&product=postgres&queryGroups=source&source=edge_logs#querying-with-the-logs-explorer) for more details.", "schema": { "type": "string" } }, { "name": "iso_timestamp_start", "required": false, "in": "query", "schema": { "format": "date-time", "example": "2025-03-01T00:00:00Z", "type": "string" } }, { "name": "iso_timestamp_end", "required": false, "in": "query", "schema": { "format": "date-time", "example": "2025-03-01T23:59:59Z", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AnalyticsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["analytics_logs_read"] }], "summary": "Gets project's logs", "tags": ["Analytics"], "x-badges": [{ "name": "OAuth scope: analytics:read", "position": "after" }], "x-endpoint-owners": ["analytics"], "x-oauth-scope": "analytics:read" } }, "/v1/projects/{ref}/analytics/endpoints/usage.api-counts": { "get": { "operationId": "v1-get-project-usage-api-count", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "interval", "required": false, "in": "query", "schema": { "example": "1day", "type": "string", "enum": ["15min", "30min", "1hr", "3hr", "1day", "3day", "7day"] } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1GetUsageApiCountResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get project's usage api counts" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["analytics_usage_read"] }], "summary": "Gets project's usage api counts", "tags": ["Analytics"], "x-endpoint-owners": ["analytics"] } }, "/v1/projects/{ref}/analytics/endpoints/usage.api-requests-count": { "get": { "operationId": "v1-get-project-usage-request-count", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1GetUsageApiRequestsCountResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get project's usage api requests count" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["analytics_usage_read"] }], "summary": "Gets project's usage api requests count", "tags": ["Analytics"], "x-endpoint-owners": ["analytics"] } }, "/v1/projects/{ref}/analytics/endpoints/functions.combined-stats": { "get": { "operationId": "v1-get-project-function-combined-stats", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "interval", "required": true, "in": "query", "schema": { "example": "1hr", "type": "string", "enum": ["15min", "1hr", "3hr", "1day"] } }, { "name": "function_id", "required": true, "in": "query", "schema": { "example": "3c078cce-ad70-4148-9f37-4da362789053", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AnalyticsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get project's function combined statistics" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["analytics_usage_read"] }], "summary": "Gets a project's function combined statistics", "tags": ["Analytics"], "x-endpoint-owners": ["analytics"] } }, "/v1/projects/{ref}/cli/login-role": { "post": { "operationId": "v1-create-login-role", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateRoleBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateRoleResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to create login role" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_write"] }], "summary": "[Beta] Create a login role for CLI with temporary password", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "database:write" }, "delete": { "operationId": "v1-delete-login-roles", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteRolesResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to delete login roles" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_write"] }], "summary": "[Beta] Delete existing login roles used by CLI", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["dev-workflows"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/database/migrations": { "get": { "description": "Only available to selected partner OAuth apps", "operationId": "v1-list-migration-history", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1ListMigrationsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to list database migrations" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_migrations_read"] }], "summary": "List applied migration versions", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "database:read" }, "post": { "description": "Only available to selected partner OAuth apps", "operationId": "v1-apply-a-migration", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "Idempotency-Key", "required": false, "in": "header", "description": "A unique key to ensure the same migration is tracked only once.", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1CreateMigrationBody" } } } }, "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to apply database migration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_migrations_write"] }], "summary": "Apply a database migration", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "database:write" }, "put": { "description": "Only available to selected partner OAuth apps", "operationId": "v1-upsert-a-migration", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "Idempotency-Key", "required": false, "in": "header", "description": "A unique key to ensure the same migration is tracked only once.", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1UpsertMigrationBody" } } } }, "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to upsert database migration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_migrations_write"] }], "summary": "Upsert a database migration without applying", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "database:write" }, "delete": { "description": "Only available to selected partner OAuth apps", "operationId": "v1-rollback-migrations", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "gte", "required": true, "in": "query", "description": "Rollback migrations greater or equal to this version", "schema": { "pattern": "^\\d+$", "example": "20250312000000", "type": "string" } } ], "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to rollback database migration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_migrations_write"] }], "summary": "Rollback database migrations and remove them from history table", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/database/migrations/{version}": { "get": { "description": "Only available to selected partner OAuth apps", "operationId": "v1-get-a-migration", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "version", "required": true, "in": "path", "schema": { "pattern": "^\\d+$", "example": "20250312000000", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1GetMigrationResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get database migration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_migrations_read"] }], "summary": "Fetch an existing entry from migration history", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "database:read" }, "patch": { "description": "Only available to selected partner OAuth apps", "operationId": "v1-patch-a-migration", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "version", "required": true, "in": "path", "schema": { "pattern": "^\\d+$", "example": "20250312000000", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1PatchMigrationBody" } } } }, "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to patch database migration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_migrations_write"] }], "summary": "Patch an existing entry in migration history", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/database/query": { "post": { "operationId": "v1-run-a-query", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1RunQueryBody" } } } }, "responses": { "201": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to run sql query" } }, "security": [ { "bearer": [] }, { "fga_permissions": ["database_write"] }, { "fga_permissions": ["database_read"] } ], "summary": "[Beta] Run sql query", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/database/query/read-only": { "post": { "description": "All entity references must be schema qualified.", "operationId": "v1-read-only-query", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1ReadOnlyQueryBody" } } } }, "responses": { "201": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to run read-only sql query" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_read"] }], "summary": "[Beta] Run a sql query as supabase_read_only_user", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "database:read" } }, "/v1/projects/{ref}/database/webhooks/enable": { "post": { "operationId": "v1-enable-database-webhook", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "201": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to enable Database Webhooks on the project" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_webhooks_config_write"] }], "summary": "[Beta] Enables Database Webhooks on the project", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/database/context": { "get": { "deprecated": true, "description": "This is an **experimental** endpoint. It is subject to change or removal in future versions. Use it with caution, as it may not remain supported or stable.", "operationId": "v1-get-database-metadata", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetProjectDbMetadataResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_read"] }], "summary": "Gets database metadata for the given project.", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: projects:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "projects:read" } }, "/v1/projects/{ref}/database/password": { "patch": { "operationId": "v1-update-database-password", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1UpdatePasswordBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1UpdatePasswordResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update database password" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_config_write"] }], "summary": "Updates the database password", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["management-api", "infra"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/database/jit": { "get": { "description": "Mappings of roles a user can assume in the project database", "operationId": "v1-get-jit-access", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JitAccessResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to list database jit access" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_jit_read"] }], "summary": "Get user-id to role mappings for JIT access", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["security"], "x-oauth-scope": "database:read" }, "post": { "description": "Authorizes the request to assume a role in the project database", "operationId": "v1-authorize-jit-access", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthorizeJitAccessBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JitAuthorizeAccessResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to authorize database jit access" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_jit_read"] }], "summary": "Authorize user-id to role mappings for JIT access", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["security"], "x-oauth-scope": "database:read" }, "put": { "description": "Modifies the roles that can be assumed and for how long", "operationId": "v1-update-jit-access", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateJitAccessBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JitAccessResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to upsert database migration" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_jit_write"] }], "summary": "Updates a user mapping for JIT access", "tags": ["Database"], "x-endpoint-owners": ["security"] } }, "/v1/projects/{ref}/database/jit/list": { "get": { "description": "Mappings of roles a user can assume in the project database", "operationId": "v1-list-jit-access", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JitListAccessResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to list database jit access" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_jit_read"] }], "summary": "List all user-id to role mappings for JIT access", "tags": ["Database"], "x-endpoint-owners": ["security"] } }, "/v1/projects/{ref}/database/jit/{user_id}": { "delete": { "description": "Remove JIT mappings of a user, revoking all JIT database access", "operationId": "v1-delete-jit-access", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "user_id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "55555555-5555-4555-8555-555555555555", "type": "string" } } ], "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to remove JIT access" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_jit_write"] }], "summary": "Delete JIT access by user-id", "tags": ["Database"], "x-endpoint-owners": ["security"] } }, "/v1/projects/{ref}/database/openapi": { "get": { "description": "Returns the PostgREST OpenAPI specification for the project. This is the replacement for querying `/rest/v1/` directly with the anon key.", "operationId": "v1-get-database-openapi", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "schema", "required": false, "in": "query", "description": "The database schema to generate the OpenAPI spec for", "schema": { "default": "public", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to fetch PostgREST OpenAPI spec" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_read"] }], "summary": "Get PostgREST OpenAPI spec", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "database:read" } }, "/v1/projects/{ref}/functions": { "get": { "description": "Returns all functions you've previously added to the specified project.", "operationId": "v1-list-all-functions", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FunctionResponse" } } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's functions" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["edge_functions_read"] }], "summary": "List all functions", "tags": ["Edge Functions"], "x-badges": [{ "name": "OAuth scope: edge_functions:read", "position": "after" }], "x-endpoint-owners": ["functions"], "x-oauth-scope": "edge_functions:read" }, "post": { "deprecated": true, "description": "This endpoint is deprecated - use the deploy endpoint. Creates a function and adds it to the specified project.", "operationId": "v1-create-a-function", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "slug", "required": false, "in": "query", "schema": { "pattern": "^[A-Za-z0-9_-]+$", "example": "hello-world", "type": "string" } }, { "name": "name", "required": false, "in": "query", "schema": { "example": "Hello World", "type": "string" } }, { "name": "verify_jwt", "required": false, "in": "query", "description": "Boolean string, true or false", "schema": { "example": true, "type": "boolean" } }, { "name": "import_map", "required": false, "in": "query", "description": "Boolean string, true or false", "schema": { "example": false, "type": "boolean" } }, { "name": "entrypoint_path", "required": false, "in": "query", "schema": { "example": "index.ts", "type": "string" } }, { "name": "import_map_path", "required": false, "in": "query", "schema": { "example": "import_map.json", "type": "string" } }, { "name": "ezbr_sha256", "required": false, "in": "query", "schema": { "example": "44c691990518d25498f0fd80cf6631ecf2b58eb9c5eb2a087dd1688f2904dac7", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/vnd.denoland.eszip": { "schema": { "type": "string", "format": "binary" } }, "application/json": { "schema": { "$ref": "#/components/schemas/V1CreateFunctionBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FunctionResponse" } } } }, "401": { "description": "Unauthorized" }, "402": { "description": "Maximum number of functions reached for Plan" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to create project's function" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["edge_functions_write"] }], "summary": "Create a function", "tags": ["Edge Functions"], "x-badges": [{ "name": "OAuth scope: edge_functions:write", "position": "after" }], "x-endpoint-owners": ["functions"], "x-oauth-scope": "edge_functions:write" }, "put": { "description": "Bulk update functions. It will create a new function or replace existing. The operation is idempotent. NOTE: You will need to manually bump the version.", "operationId": "v1-bulk-update-functions", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkUpdateFunctionBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkUpdateFunctionResponse" } } } }, "401": { "description": "Unauthorized" }, "402": { "description": "Maximum number of functions reached for Plan" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update functions" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["edge_functions_write"] }], "summary": "Bulk update functions", "tags": ["Edge Functions"], "x-badges": [{ "name": "OAuth scope: edge_functions:write", "position": "after" }], "x-endpoint-owners": ["functions"], "x-oauth-scope": "edge_functions:write" } }, "/v1/projects/{ref}/functions/deploy": { "post": { "description": "A new endpoint to deploy functions. It will create if function does not exist.", "operationId": "v1-deploy-a-function", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "slug", "required": false, "in": "query", "schema": { "pattern": "^[A-Za-z][A-Za-z0-9_-]*$", "example": "hello-world", "type": "string" } }, { "name": "bundleOnly", "required": false, "in": "query", "description": "Boolean string, true or false", "schema": { "example": false, "type": "boolean" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/FunctionDeployBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeployFunctionResponse" } } } }, "401": { "description": "Unauthorized" }, "402": { "description": "Maximum number of functions reached for Plan" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to deploy function" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["edge_functions_write"] }], "summary": "Deploy a function", "tags": ["Edge Functions"], "x-badges": [{ "name": "OAuth scope: edge_functions:write", "position": "after" }], "x-endpoint-owners": ["functions"], "x-oauth-scope": "edge_functions:write" } }, "/v1/projects/{ref}/functions/{function_slug}": { "get": { "description": "Retrieves a function with the specified slug and project.", "operationId": "v1-get-a-function", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "function_slug", "required": true, "in": "path", "description": "Function slug", "schema": { "pattern": "^[A-Za-z0-9_-]+$", "example": "hello-world", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FunctionSlugResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve function with given slug" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["edge_functions_read"] }], "summary": "Retrieve a function", "tags": ["Edge Functions"], "x-badges": [{ "name": "OAuth scope: edge_functions:read", "position": "after" }], "x-endpoint-owners": ["functions"], "x-oauth-scope": "edge_functions:read" }, "patch": { "description": "Updates a function with the specified slug and project.", "operationId": "v1-update-a-function", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "function_slug", "required": true, "in": "path", "description": "Function slug", "schema": { "pattern": "^[A-Za-z0-9_-]+$", "example": "hello-world", "type": "string" } }, { "name": "slug", "required": false, "in": "query", "schema": { "pattern": "^[A-Za-z0-9_-]+$", "example": "hello-world", "type": "string" } }, { "name": "name", "required": false, "in": "query", "schema": { "example": "Hello World", "type": "string" } }, { "name": "verify_jwt", "required": false, "in": "query", "description": "Boolean string, true or false", "schema": { "example": true, "type": "boolean" } }, { "name": "import_map", "required": false, "in": "query", "description": "Boolean string, true or false", "schema": { "example": false, "type": "boolean" } }, { "name": "entrypoint_path", "required": false, "in": "query", "schema": { "example": "index.ts", "type": "string" } }, { "name": "import_map_path", "required": false, "in": "query", "schema": { "example": "import_map.json", "type": "string" } }, { "name": "ezbr_sha256", "required": false, "in": "query", "schema": { "example": "44c691990518d25498f0fd80cf6631ecf2b58eb9c5eb2a087dd1688f2904dac7", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/vnd.denoland.eszip": { "schema": { "type": "string", "format": "binary" } }, "application/json": { "schema": { "$ref": "#/components/schemas/V1UpdateFunctionBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FunctionResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update function with given slug" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["edge_functions_write"] }], "summary": "Update a function", "tags": ["Edge Functions"], "x-badges": [{ "name": "OAuth scope: edge_functions:write", "position": "after" }], "x-endpoint-owners": ["functions"], "x-oauth-scope": "edge_functions:write" }, "delete": { "description": "Deletes a function with the specified slug from the specified project.", "operationId": "v1-delete-a-function", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "function_slug", "required": true, "in": "path", "description": "Function slug", "schema": { "pattern": "^[A-Za-z0-9_-]+$", "example": "hello-world", "type": "string" } } ], "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to delete function with given slug" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["edge_functions_write"] }], "summary": "Delete a function", "tags": ["Edge Functions"], "x-badges": [{ "name": "OAuth scope: edge_functions:write", "position": "after" }], "x-endpoint-owners": ["functions"], "x-oauth-scope": "edge_functions:write" } }, "/v1/projects/{ref}/functions/{function_slug}/body": { "get": { "description": "Retrieves a function body for the specified slug and project.", "operationId": "v1-get-a-function-body", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "function_slug", "required": true, "in": "path", "description": "Function slug", "schema": { "pattern": "^[A-Za-z0-9_-]+$", "example": "hello-world", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StreamableFile" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve function body with given slug" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["edge_functions_read"] }], "summary": "Retrieve a function body", "tags": ["Edge Functions"], "x-badges": [{ "name": "OAuth scope: edge_functions:read", "position": "after" }], "x-endpoint-owners": ["functions"], "x-oauth-scope": "edge_functions:read" } }, "/v1/projects/{ref}/storage/buckets": { "get": { "operationId": "v1-list-all-buckets", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/V1StorageBucketResponse" } } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get list of buckets" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["storage_read"] }], "summary": "Lists all buckets", "tags": ["Storage"], "x-badges": [{ "name": "OAuth scope: storage:read", "position": "after" }], "x-endpoint-owners": ["storage"], "x-oauth-scope": "storage:read" } }, "/v1/projects/{ref}/config/disk": { "get": { "operationId": "v1-get-database-disk", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiskResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get database disk attributes" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["infra_disk_config_read"] }], "summary": "Get database disk attributes", "tags": ["Projects"], "x-endpoint-owners": ["management-api", "infra"] }, "post": { "operationId": "v1-modify-database-disk", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiskRequestBody" } } } }, "responses": { "201": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to modify database disk" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["infra_disk_config_write"] }], "summary": "Modify database disk", "tags": ["Projects"], "x-endpoint-owners": ["management-api", "infra"] } }, "/v1/projects/{ref}/config/disk/util": { "get": { "operationId": "v1-get-disk-utilization", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiskUtilMetricsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get disk utilization" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["infra_disk_config_read"] }], "summary": "Get disk utilization", "tags": ["Projects"], "x-endpoint-owners": ["management-api", "infra"] } }, "/v1/projects/{ref}/config/disk/autoscale": { "get": { "operationId": "v1-get-project-disk-autoscale-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiskAutoscaleConfig" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get project disk autoscale config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["infra_disk_config_read"] }], "summary": "Gets project disk autoscale config", "tags": ["Projects"], "x-endpoint-owners": ["management-api", "infra"] } }, "/v1/projects/{ref}/config/storage": { "get": { "operationId": "v1-get-storage-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's storage config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["storage_config_read"] }], "summary": "Gets project's storage config", "tags": ["Storage"], "x-endpoint-owners": ["storage"] }, "patch": { "operationId": "v1-update-storage-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateStorageConfigBody" } } } }, "responses": { "200": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project's storage config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["storage_config_write"] }], "summary": "Updates project's storage config", "tags": ["Storage"], "x-endpoint-owners": ["storage"] } }, "/v1/projects/{ref}/config/database/pgbouncer": { "get": { "operationId": "v1-get-project-pgbouncer-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1PgbouncerConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's pgbouncer config" } }, "security": [{ "fga_permissions": ["database_read"] }], "summary": "Get project's pgbouncer config", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "database:read" } }, "/v1/projects/{ref}/config/database/pooler": { "get": { "operationId": "v1-get-pooler-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SupavisorConfigResponse" } } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's supavisor config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_pooling_config_read"] }], "summary": "Gets project's supavisor config", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "database:read" }, "patch": { "operationId": "v1-update-pooler-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSupavisorConfigBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSupavisorConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project's supavisor config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_pooling_config_write"] }], "summary": "Updates project's supavisor config", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/config/database/postgres": { "get": { "operationId": "v1-get-postgres-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PostgresConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to retrieve project's Postgres config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_config_read"] }], "summary": "Gets project's Postgres config", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "database:read" }, "put": { "operationId": "v1-update-postgres-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdatePostgresConfigBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PostgresConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to update project's Postgres config" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["database_config_write"] }], "summary": "Updates project's Postgres config", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["infra", "management-api"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/config/realtime": { "get": { "operationId": "v1-get-realtime-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "Gets project's realtime configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RealtimeConfigResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["realtime_config_read"] }], "summary": "Gets realtime configuration", "tags": ["Realtime"], "x-endpoint-owners": ["realtime"] }, "patch": { "operationId": "v1-update-realtime-config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRealtimeConfigBody" } } } }, "responses": { "204": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["realtime_config_write"] }], "summary": "Updates realtime configuration", "tags": ["Realtime"], "x-endpoint-owners": ["realtime"] } }, "/v1/projects/{ref}/config/realtime/shutdown": { "post": { "operationId": "v1-shutdown-realtime", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "204": { "description": "Realtime connections shutdown successfully" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "404": { "description": "Tenant not found" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["realtime_config_write"] }], "summary": "Shutdowns realtime connections for a project", "tags": ["Realtime"], "x-endpoint-owners": ["realtime"] } }, "/v1/projects/{ref}/config/auth/sso/providers": { "post": { "operationId": "v1-create-a-sso-provider", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateProviderBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateProviderResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "404": { "description": "SAML 2.0 support is not enabled for this project" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_config_write"] }], "summary": "Creates a new SSO provider", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: auth:write", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "auth:write" }, "get": { "operationId": "v1-list-all-sso-provider", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListProvidersResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "404": { "description": "SAML 2.0 support is not enabled for this project" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_config_read"] }], "summary": "Lists all SSO providers", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: auth:read", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "auth:read" } }, "/v1/projects/{ref}/config/auth/sso/providers/{provider_id}": { "get": { "operationId": "v1-get-a-sso-provider", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "provider_id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "77777777-7777-4777-8777-777777777777", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetProviderResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "404": { "description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_config_read"] }], "summary": "Gets a SSO provider by its UUID", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: auth:read", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "auth:read" }, "put": { "operationId": "v1-update-a-sso-provider", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "provider_id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "77777777-7777-4777-8777-777777777777", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateProviderBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateProviderResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "404": { "description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_config_write"] }], "summary": "Updates a SSO provider by its UUID", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: auth:write", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "auth:write" }, "delete": { "operationId": "v1-delete-a-sso-provider", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "provider_id", "required": true, "in": "path", "schema": { "format": "uuid", "example": "77777777-7777-4777-8777-777777777777", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteProviderResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "404": { "description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["auth_config_write"] }], "summary": "Removes a SSO provider by its UUID", "tags": ["Auth"], "x-badges": [{ "name": "OAuth scope: auth:write", "position": "after" }], "x-endpoint-owners": ["auth"], "x-oauth-scope": "auth:write" } }, "/v1/projects/{ref}/database/backups": { "get": { "operationId": "v1-list-all-backups", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1BackupsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get backups" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["backups_read"] }], "summary": "Lists all backups", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "database:read" } }, "/v1/projects/{ref}/database/backups/restore-pitr": { "post": { "operationId": "v1-restore-pitr-backup", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1RestorePitrBody" } } } }, "responses": { "201": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["backups_write"] }], "summary": "Restores a PITR backup for a database", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["infra"], "x-oauth-scope": "database:write" } }, "/v1/projects/{ref}/database/backups/restore-point": { "post": { "operationId": "v1-create-restore-point", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1RestorePointPostBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1RestorePointResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["backups_write"] }], "summary": "Initiates a creation of a restore point for a database", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["infra"], "x-internal": true, "x-oauth-scope": "database:write" }, "get": { "operationId": "v1-get-restore-point", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } }, { "name": "name", "required": false, "in": "query", "schema": { "maxLength": 20, "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1RestorePointResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" }, "500": { "description": "Failed to get requested restore points" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["backups_read"] }], "summary": "Get restore points for project", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:read", "position": "after" }], "x-endpoint-owners": ["infra"], "x-internal": true, "x-oauth-scope": "database:read" } }, "/v1/projects/{ref}/database/backups/undo": { "post": { "operationId": "v1-undo", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "example": "abcdefghijklmnopqrst", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1UndoBody" } } } }, "responses": { "201": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["backups_write"] }], "summary": "Initiates an undo to a given restore point", "tags": ["Database"], "x-badges": [{ "name": "OAuth scope: database:write", "position": "after" }], "x-endpoint-owners": ["infra"], "x-internal": true, "x-oauth-scope": "database:write" } }, "/v1/organizations/{slug}/entitlements": { "get": { "description": "Returns the entitlements available to the organization based on their plan and any overrides.", "operationId": "v1-get-organization-entitlements", "parameters": [ { "name": "slug", "required": true, "in": "path", "description": "Organization slug", "schema": { "pattern": "^[\\w-]+$", "example": "tsrqponmlkjihgfedcba", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1ListEntitlementsResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["organization_projects_read"] }], "summary": "Get entitlements for an organization", "tags": ["Organizations"], "x-badges": [{ "name": "OAuth scope: organizations:read", "position": "after" }], "x-endpoint-owners": ["billing"], "x-oauth-scope": "organizations:read" } }, "/v1/organizations/{slug}/members": { "get": { "operationId": "v1-list-organization-members", "parameters": [ { "name": "slug", "required": true, "in": "path", "description": "Organization slug", "schema": { "pattern": "^[\\w-]+$", "example": "tsrqponmlkjihgfedcba", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/V1OrganizationMemberResponse" } } } } } }, "security": [{ "bearer": [] }, { "fga_permissions": ["members_read"] }], "summary": "List members of an organization", "tags": ["Organizations"], "x-badges": [{ "name": "OAuth scope: organizations:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "organizations:read" } }, "/v1/organizations/{slug}": { "get": { "operationId": "v1-get-an-organization", "parameters": [ { "name": "slug", "required": true, "in": "path", "description": "Organization slug", "schema": { "pattern": "^[\\w-]+$", "example": "tsrqponmlkjihgfedcba", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1OrganizationSlugResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["organization_admin_read"] }], "summary": "Gets information about the organization", "tags": ["Organizations"], "x-badges": [{ "name": "OAuth scope: organizations:read", "position": "after" }], "x-endpoint-owners": ["management-api"], "x-oauth-scope": "organizations:read" } }, "/v1/organizations/{slug}/project-claim/{token}": { "get": { "operationId": "v1-get-organization-project-claim", "parameters": [ { "name": "slug", "required": true, "in": "path", "description": "Organization slug", "schema": { "pattern": "^[\\w-]+$", "example": "tsrqponmlkjihgfedcba", "type": "string" } }, { "name": "token", "required": true, "in": "path", "schema": { "example": "0123456789abcdef0123456789abcdef01234567", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationProjectClaimResponse" } } } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["organization_admin_write"] }], "summary": "Gets project details for the specified organization and claim token", "tags": ["Organizations"], "x-endpoint-owners": ["management-api"], "x-internal": true }, "post": { "operationId": "v1-claim-project-for-organization", "parameters": [ { "name": "slug", "required": true, "in": "path", "description": "Organization slug", "schema": { "pattern": "^[\\w-]+$", "example": "tsrqponmlkjihgfedcba", "type": "string" } }, { "name": "token", "required": true, "in": "path", "schema": { "example": "0123456789abcdef0123456789abcdef01234567", "type": "string" } } ], "responses": { "204": { "description": "" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden action" }, "429": { "description": "Rate limit exceeded" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["organization_admin_write"] }], "summary": "Claims project for the specified organization", "tags": ["Organizations"], "x-endpoint-owners": ["management-api"], "x-internal": true } }, "/v1/organizations/{slug}/projects": { "get": { "description": "Returns a paginated list of projects for the specified organization.\n\nThis endpoint uses offset-based pagination. Use the `offset` parameter to skip a number of projects and the `limit` parameter to control the number of projects returned per page.", "operationId": "v1-get-all-projects-for-organization", "parameters": [ { "name": "slug", "required": true, "in": "path", "description": "Organization slug", "schema": { "pattern": "^[\\w-]+$", "example": "tsrqponmlkjihgfedcba", "type": "string" } }, { "name": "offset", "required": false, "in": "query", "description": "Number of projects to skip", "schema": { "minimum": 0, "default": 0, "example": 0, "type": "integer" } }, { "name": "limit", "required": false, "in": "query", "description": "Number of projects to return per page", "schema": { "minimum": 1, "maximum": 100, "default": 100, "example": 20, "type": "integer" } }, { "name": "search", "required": false, "in": "query", "description": "Search projects by name", "schema": { "example": "acme", "type": "string" } }, { "name": "sort", "required": false, "in": "query", "description": "Sort order for projects", "schema": { "default": "name_asc", "example": "created_desc", "type": "string", "enum": ["name_asc", "name_desc", "created_asc", "created_desc"] } }, { "name": "statuses", "required": false, "in": "query", "description": "A comma-separated list of project statuses to filter by.\n\nThe following values are supported: `ACTIVE_HEALTHY`, `INACTIVE`.", "schema": { "example": "ACTIVE_HEALTHY,INACTIVE", "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationProjectsResponse" } } } }, "500": { "description": "Failed to retrieve projects" } }, "security": [{ "bearer": [] }, { "fga_permissions": ["organization_projects_read"] }], "summary": "Gets all projects for the given organization", "tags": ["Projects"], "x-endpoint-owners": ["management-api"] } } }, "info": { "title": "Supabase API (v1)", "description": "Supabase API generated from the OpenAPI specification.
Visit [https://supabase.com/docs](https://supabase.com/docs) for a complete documentation.", "version": "1.0.0", "contact": {} }, "tags": [ { "name": "Advisors", "description": "Advisors related endpoints" }, { "name": "Analytics", "description": "Analytics related endpoints" }, { "name": "Auth", "description": "Auth related endpoints" }, { "name": "Billing", "description": "Billing related endpoints" }, { "name": "Database", "description": "Database related endpoints" }, { "name": "Domains", "description": "Domains related endpoints" }, { "name": "Edge Functions", "description": "Edge related endpoints" }, { "name": "Environments", "description": "Environments related endpoints" }, { "name": "OAuth", "description": "OAuth related endpoints" }, { "name": "Organizations", "description": "Organizations related endpoints" }, { "name": "Projects", "description": "Projects related endpoints" }, { "name": "Rest", "description": "Rest related endpoints" }, { "name": "Secrets", "description": "Secrets related endpoints" }, { "name": "Storage", "description": "Visit [https://supabase.github.io/storage/](https://supabase.github.io/storage/) for complete documentation." } ], "servers": [], "components": { "securitySchemes": { "bearer": { "scheme": "bearer", "bearerFormat": "JWT", "type": "http" } }, "schemas": { "BranchDetailResponse": { "type": "object", "properties": { "ref": { "type": "string" }, "postgres_version": { "type": "string" }, "postgres_engine": { "type": "string" }, "release_channel": { "type": "string" }, "status": { "type": "string", "enum": [ "INACTIVE", "ACTIVE_HEALTHY", "ACTIVE_UNHEALTHY", "COMING_UP", "UNKNOWN", "GOING_DOWN", "INIT_FAILED", "REMOVED", "RESTORING", "UPGRADING", "PAUSING", "RESTORE_FAILED", "RESTARTING", "PAUSE_FAILED", "RESIZING" ] }, "db_host": { "type": "string" }, "db_port": { "type": "integer", "minimum": 0, "exclusiveMinimum": true }, "db_user": { "type": "string" }, "db_pass": { "type": "string" }, "jwt_secret": { "type": "string" } }, "required": [ "ref", "postgres_version", "postgres_engine", "release_channel", "status", "db_host", "db_port" ] }, "UpdateBranchBody": { "type": "object", "properties": { "branch_name": { "type": "string" }, "git_branch": { "type": "string" }, "reset_on_push": { "type": "boolean", "description": "This field is deprecated and will be ignored. Use v1-reset-a-branch endpoint directly instead.", "deprecated": true }, "persistent": { "type": "boolean" }, "status": { "type": "string", "enum": [ "CREATING_PROJECT", "RUNNING_MIGRATIONS", "MIGRATIONS_PASSED", "MIGRATIONS_FAILED", "FUNCTIONS_DEPLOYED", "FUNCTIONS_FAILED" ] }, "request_review": { "type": "boolean" }, "notify_url": { "type": "string", "format": "uri", "description": "HTTP endpoint to receive branch status updates." } }, "example": { "branch_name": "preview-login-page", "git_branch": "feature/login-page", "persistent": true, "request_review": true, "notify_url": "https://example.com/webhooks/branches" } }, "BranchResponse": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string" }, "project_ref": { "type": "string" }, "parent_project_ref": { "type": "string" }, "is_default": { "type": "boolean" }, "git_branch": { "type": "string" }, "pr_number": { "type": "integer", "format": "int32" }, "latest_check_run_id": { "type": "number", "description": "This field is deprecated and will not be populated.", "deprecated": true }, "persistent": { "type": "boolean" }, "status": { "type": "string", "enum": [ "CREATING_PROJECT", "RUNNING_MIGRATIONS", "MIGRATIONS_PASSED", "MIGRATIONS_FAILED", "FUNCTIONS_DEPLOYED", "FUNCTIONS_FAILED" ] }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "review_requested_at": { "type": "string", "format": "date-time" }, "with_data": { "type": "boolean" }, "notify_url": { "type": "string", "format": "uri" }, "deletion_scheduled_at": { "type": "string", "format": "date-time" }, "preview_project_status": { "type": "string", "enum": [ "INACTIVE", "ACTIVE_HEALTHY", "ACTIVE_UNHEALTHY", "COMING_UP", "UNKNOWN", "GOING_DOWN", "INIT_FAILED", "REMOVED", "RESTORING", "UPGRADING", "PAUSING", "RESTORE_FAILED", "RESTARTING", "PAUSE_FAILED", "RESIZING" ] } }, "required": [ "id", "name", "project_ref", "parent_project_ref", "is_default", "persistent", "status", "created_at", "updated_at", "with_data" ] }, "BranchDeleteResponse": { "type": "object", "properties": { "message": { "type": "string", "enum": ["ok"] } }, "required": ["message"] }, "BranchActionBody": { "type": "object", "properties": { "migration_version": { "type": "string" } }, "example": { "migration_version": "20250312000000" } }, "BranchUpdateResponse": { "type": "object", "properties": { "workflow_run_id": { "type": "string" }, "message": { "type": "string", "enum": ["ok"] } }, "required": ["workflow_run_id", "message"] }, "BranchRestoreResponse": { "type": "object", "properties": { "message": { "type": "string", "enum": ["Branch restoration initiated"] } }, "required": ["message"] }, "V1ListProjectsPaginatedResponse": { "type": "object", "properties": { "projects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "cloud_provider": { "type": "string" }, "inserted_at": { "type": "string", "nullable": true }, "name": { "type": "string" }, "organization_id": { "type": "number" }, "organization_slug": { "type": "string" }, "ref": { "type": "string" }, "region": { "type": "string" }, "status": { "type": "string" }, "subscription_id": { "type": "string", "nullable": true }, "is_branch_enabled": { "type": "boolean" }, "is_physical_backups_enabled": { "type": "boolean", "nullable": true }, "preview_branch_refs": { "type": "array", "items": { "type": "string" } }, "disk_volume_size_gb": { "type": "number" }, "infra_compute_size": { "type": "string", "enum": [ "pico", "nano", "micro", "small", "medium", "large", "xlarge", "2xlarge", "4xlarge", "8xlarge", "12xlarge", "16xlarge", "24xlarge", "24xlarge_optimized_memory", "24xlarge_optimized_cpu", "24xlarge_high_memory", "48xlarge", "48xlarge_optimized_memory", "48xlarge_optimized_cpu", "48xlarge_high_memory" ] } }, "required": [ "id", "cloud_provider", "inserted_at", "name", "organization_id", "organization_slug", "ref", "region", "status", "subscription_id", "is_branch_enabled", "is_physical_backups_enabled", "preview_branch_refs" ] } }, "pagination": { "type": "object", "properties": { "count": { "type": "number", "description": "Total number of projects. Use this to calculate the total number of pages." }, "limit": { "type": "number", "description": "Maximum number of projects per page (actual number may be less)" }, "offset": { "type": "number", "description": "Number of projects skipped in this response" } }, "required": ["count", "limit", "offset"] } }, "required": ["projects", "pagination"] }, "V1ProjectWithDatabaseResponse": { "type": "object", "properties": { "id": { "type": "string", "deprecated": true, "description": "Deprecated: Use `ref` instead." }, "ref": { "type": "string", "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "description": "Project ref", "example": "abcdefghijklmnopqrst" }, "organization_id": { "type": "string", "description": "Deprecated: Use `organization_slug` instead.", "deprecated": true }, "organization_slug": { "type": "string", "pattern": "^[\\w-]+$", "description": "Organization slug", "example": "tsrqponmlkjihgfedcba" }, "name": { "type": "string", "description": "Name of your project" }, "region": { "type": "string", "description": "Region of your project" }, "created_at": { "type": "string", "description": "Creation timestamp" }, "status": { "type": "string", "enum": [ "INACTIVE", "ACTIVE_HEALTHY", "ACTIVE_UNHEALTHY", "COMING_UP", "UNKNOWN", "GOING_DOWN", "INIT_FAILED", "REMOVED", "RESTORING", "UPGRADING", "PAUSING", "RESTORE_FAILED", "RESTARTING", "PAUSE_FAILED", "RESIZING" ] }, "database": { "type": "object", "properties": { "host": { "type": "string", "description": "Database host" }, "version": { "type": "string", "description": "Database version" }, "postgres_engine": { "type": "string", "description": "Database engine" }, "release_channel": { "type": "string", "description": "Release channel" } }, "required": ["host", "version", "postgres_engine", "release_channel"] } }, "required": [ "id", "ref", "organization_id", "organization_slug", "name", "region", "created_at", "status", "database" ] }, "V1CreateProjectBody": { "type": "object", "properties": { "db_pass": { "type": "string", "description": "Database password" }, "name": { "type": "string", "maxLength": 256, "description": "Name of your project" }, "organization_id": { "type": "string", "description": "Deprecated: Use `organization_slug` instead.", "deprecated": true }, "organization_slug": { "type": "string", "pattern": "^[\\w-]+$", "description": "Organization slug", "example": "tsrqponmlkjihgfedcba" }, "plan": { "type": "string", "enum": ["free", "pro"], "deprecated": true, "description": "Subscription Plan is now set on organization level and is ignored in this request" }, "region": { "type": "string", "description": "Region you want your server to reside in. Use region_selection instead.", "deprecated": true, "enum": [ "us-east-1", "us-east-2", "us-west-1", "us-west-2", "ap-east-1", "ap-southeast-1", "ap-northeast-1", "ap-northeast-2", "ap-southeast-2", "eu-west-1", "eu-west-2", "eu-west-3", "eu-north-1", "eu-central-1", "eu-central-2", "ca-central-1", "ap-south-1", "sa-east-1" ] }, "region_selection": { "discriminator": { "propertyName": "type" }, "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["specific"] }, "code": { "type": "string", "minLength": 1, "description": "Specific region code. The codes supported are not a stable API, and should be retrieved from the /available-regions endpoint.", "enum": [ "us-east-1", "us-east-2", "us-west-1", "us-west-2", "ap-east-1", "ap-southeast-1", "ap-northeast-1", "ap-northeast-2", "ap-southeast-2", "eu-west-1", "eu-west-2", "eu-west-3", "eu-north-1", "eu-central-1", "eu-central-2", "ca-central-1", "ap-south-1", "sa-east-1" ] } }, "required": ["type", "code"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["smartGroup"] }, "code": { "type": "string", "enum": ["americas", "emea", "apac"], "description": "The Smart Region Group's code. The codes supported are not a stable API, and should be retrieved from the /available-regions endpoint." } }, "required": ["type", "code"] } ], "description": "Region selection. Only one of region or region_selection can be specified." }, "kps_enabled": { "type": "boolean", "deprecated": true, "description": "This field is deprecated and is ignored in this request" }, "desired_instance_size": { "description": "Desired instance size. Omit this field to always default to the smallest possible size.", "type": "string", "enum": [ "nano", "micro", "small", "medium", "large", "xlarge", "2xlarge", "4xlarge", "8xlarge", "12xlarge", "16xlarge", "24xlarge", "24xlarge_optimized_memory", "24xlarge_optimized_cpu", "24xlarge_high_memory", "48xlarge", "48xlarge_optimized_memory", "48xlarge_optimized_cpu", "48xlarge_high_memory" ] }, "template_url": { "type": "string", "format": "uri", "description": "Template URL used to create the project from the CLI." } }, "required": ["db_pass", "name", "organization_slug"], "additionalProperties": false, "hideDefinitions": ["release_channel", "postgres_engine"], "example": { "db_pass": "correct-horse-battery-staple", "name": "acme-prod", "organization_slug": "tsrqponmlkjihgfedcba", "region": "us-east-1" } }, "V1ProjectResponse": { "type": "object", "properties": { "id": { "type": "string", "deprecated": true, "description": "Deprecated: Use `ref` instead." }, "ref": { "type": "string", "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "description": "Project ref", "example": "abcdefghijklmnopqrst" }, "organization_id": { "type": "string", "description": "Deprecated: Use `organization_slug` instead.", "deprecated": true }, "organization_slug": { "type": "string", "pattern": "^[\\w-]+$", "description": "Organization slug", "example": "tsrqponmlkjihgfedcba" }, "name": { "type": "string", "description": "Name of your project" }, "region": { "type": "string", "description": "Region of your project" }, "created_at": { "type": "string", "description": "Creation timestamp" }, "status": { "type": "string", "enum": [ "INACTIVE", "ACTIVE_HEALTHY", "ACTIVE_UNHEALTHY", "COMING_UP", "UNKNOWN", "GOING_DOWN", "INIT_FAILED", "REMOVED", "RESTORING", "UPGRADING", "PAUSING", "RESTORE_FAILED", "RESTARTING", "PAUSE_FAILED", "RESIZING" ] } }, "required": [ "id", "ref", "organization_id", "organization_slug", "name", "region", "created_at", "status" ] }, "RegionsInfo": { "type": "object", "properties": { "recommendations": { "type": "object", "properties": { "smartGroup": { "type": "object", "properties": { "name": { "type": "string" }, "code": { "type": "string", "enum": ["americas", "emea", "apac"] }, "type": { "type": "string", "enum": ["smartGroup"] } }, "required": ["name", "code", "type"] }, "specific": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "code": { "type": "string", "enum": [ "us-east-1", "us-east-2", "us-west-1", "us-west-2", "ap-southeast-1", "ap-northeast-1", "ap-northeast-2", "ap-east-1", "ap-southeast-2", "eu-west-1", "eu-west-2", "eu-west-3", "eu-north-1", "eu-central-1", "eu-central-2", "ca-central-1", "ap-south-1", "sa-east-1" ] }, "type": { "type": "string", "enum": ["specific"] }, "provider": { "type": "string", "enum": ["AWS", "FLY", "AWS_K8S", "AWS_NIMBUS"] }, "status": { "type": "string", "enum": ["capacity", "other"] } }, "required": ["name", "code", "type", "provider"] } } }, "required": ["smartGroup", "specific"] }, "all": { "type": "object", "properties": { "smartGroup": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "code": { "type": "string", "enum": ["americas", "emea", "apac"] }, "type": { "type": "string", "enum": ["smartGroup"] } }, "required": ["name", "code", "type"] } }, "specific": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "code": { "type": "string", "enum": [ "us-east-1", "us-east-2", "us-west-1", "us-west-2", "ap-southeast-1", "ap-northeast-1", "ap-northeast-2", "ap-east-1", "ap-southeast-2", "eu-west-1", "eu-west-2", "eu-west-3", "eu-north-1", "eu-central-1", "eu-central-2", "ca-central-1", "ap-south-1", "sa-east-1" ] }, "type": { "type": "string", "enum": ["specific"] }, "provider": { "type": "string", "enum": ["AWS", "FLY", "AWS_K8S", "AWS_NIMBUS"] }, "status": { "type": "string", "enum": ["capacity", "other"] } }, "required": ["name", "code", "type", "provider"] } } }, "required": ["smartGroup", "specific"] } }, "required": ["recommendations", "all"] }, "OrganizationResponseV1": { "type": "object", "properties": { "id": { "type": "string", "description": "Deprecated: Use `slug` instead.", "deprecated": true }, "slug": { "type": "string", "pattern": "^[\\w-]+$", "description": "Organization slug", "example": "tsrqponmlkjihgfedcba" }, "name": { "type": "string" } }, "required": ["id", "slug", "name"] }, "CreateOrganizationV1": { "type": "object", "properties": { "name": { "type": "string", "maxLength": 256 } }, "required": ["name"], "additionalProperties": false, "example": { "name": "Acme" } }, "OAuthTokenBody": { "type": "object", "properties": { "grant_type": { "type": "string", "enum": ["authorization_code", "refresh_token"] }, "client_id": { "type": "string", "format": "uuid" }, "client_secret": { "type": "string" }, "code": { "type": "string" }, "code_verifier": { "type": "string" }, "redirect_uri": { "type": "string" }, "refresh_token": { "type": "string" }, "resource": { "type": "string", "format": "uri", "description": "Resource indicator for MCP (Model Context Protocol) clients" }, "scope": { "type": "string" } }, "additionalProperties": false, "example": { "grant_type": "authorization_code", "client_id": "66666666-6666-4666-8666-666666666666", "client_secret": "sb_secret_live_example_9f4d3a206b2e4a7e8c91", "code": "oauth_code_9f4d3a206b2e4a7e8c91", "code_verifier": "qW0Z6d9pQnW0mL1dK1q9wFq6Yz2nV5rA8jT3mP7sH4c", "redirect_uri": "https://app.acme.com/auth/callback", "scope": "projects:read projects:write" } }, "OAuthTokenResponse": { "type": "object", "properties": { "access_token": { "type": "string" }, "refresh_token": { "type": "string" }, "expires_in": { "type": "integer" }, "token_type": { "type": "string", "enum": ["Bearer"] } }, "required": ["access_token", "refresh_token", "expires_in", "token_type"], "additionalProperties": false }, "OAuthRevokeTokenBody": { "type": "object", "properties": { "client_id": { "type": "string", "format": "uuid" }, "client_secret": { "type": "string" }, "refresh_token": { "type": "string" } }, "required": ["client_id", "client_secret", "refresh_token"], "additionalProperties": false, "example": { "client_id": "66666666-6666-4666-8666-666666666666", "client_secret": "sb_secret_live_example_9f4d3a206b2e4a7e8c91", "refresh_token": "oauth_refresh_9f4d3a206b2e4a7e8c91" } }, "SnippetList": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "inserted_at": { "type": "string" }, "updated_at": { "type": "string" }, "type": { "type": "string", "enum": ["sql"] }, "visibility": { "type": "string", "enum": ["user", "project", "org", "public"] }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "project": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" } }, "required": ["id", "name"] }, "owner": { "type": "object", "properties": { "id": { "type": "number" }, "username": { "type": "string" } }, "required": ["id", "username"] }, "updated_by": { "type": "object", "properties": { "id": { "type": "number" }, "username": { "type": "string" } }, "required": ["id", "username"] }, "favorite": { "type": "boolean" } }, "required": [ "id", "inserted_at", "updated_at", "type", "visibility", "name", "description", "project", "owner", "updated_by", "favorite" ] } }, "cursor": { "type": "string" } }, "required": ["data"] }, "SnippetResponse": { "type": "object", "properties": { "id": { "type": "string" }, "inserted_at": { "type": "string" }, "updated_at": { "type": "string" }, "type": { "type": "string", "enum": ["sql"] }, "visibility": { "type": "string", "enum": ["user", "project", "org", "public"] }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "project": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" } }, "required": ["id", "name"] }, "owner": { "type": "object", "properties": { "id": { "type": "number" }, "username": { "type": "string" } }, "required": ["id", "username"] }, "updated_by": { "type": "object", "properties": { "id": { "type": "number" }, "username": { "type": "string" } }, "required": ["id", "username"] }, "favorite": { "type": "boolean" }, "content": { "type": "object", "properties": { "favorite": { "type": "boolean", "deprecated": true, "description": "Deprecated: Rely on root-level favorite property instead." }, "schema_version": { "type": "string" }, "sql": { "type": "string" } }, "required": ["schema_version", "sql"] } }, "required": [ "id", "inserted_at", "updated_at", "type", "visibility", "name", "description", "project", "owner", "updated_by", "favorite", "content" ] }, "V1ProfileResponse": { "type": "object", "properties": { "gotrue_id": { "type": "string" }, "primary_email": { "type": "string" }, "username": { "type": "string" } }, "required": ["gotrue_id", "primary_email", "username"] }, "ListActionRunResponse": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "branch_id": { "type": "string" }, "run_steps": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "enum": ["clone", "pull", "health", "configure", "migrate", "seed", "deploy"] }, "status": { "type": "string", "enum": [ "CREATED", "DEAD", "EXITED", "PAUSED", "REMOVING", "RESTARTING", "RUNNING" ] }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["name", "status", "created_at", "updated_at"] } }, "git_config": { "nullable": true }, "workdir": { "type": "string", "nullable": true }, "check_run_id": { "type": "number", "nullable": true }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": [ "id", "branch_id", "run_steps", "workdir", "check_run_id", "created_at", "updated_at" ] } }, "ActionRunResponse": { "type": "object", "properties": { "id": { "type": "string" }, "branch_id": { "type": "string" }, "run_steps": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "enum": ["clone", "pull", "health", "configure", "migrate", "seed", "deploy"] }, "status": { "type": "string", "enum": [ "CREATED", "DEAD", "EXITED", "PAUSED", "REMOVING", "RESTARTING", "RUNNING" ] }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["name", "status", "created_at", "updated_at"] } }, "git_config": { "nullable": true }, "workdir": { "type": "string", "nullable": true }, "check_run_id": { "type": "number", "nullable": true }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": [ "id", "branch_id", "run_steps", "workdir", "check_run_id", "created_at", "updated_at" ] }, "UpdateRunStatusBody": { "type": "object", "properties": { "clone": { "type": "string", "enum": ["CREATED", "DEAD", "EXITED", "PAUSED", "REMOVING", "RESTARTING", "RUNNING"] }, "pull": { "type": "string", "enum": ["CREATED", "DEAD", "EXITED", "PAUSED", "REMOVING", "RESTARTING", "RUNNING"] }, "health": { "type": "string", "enum": ["CREATED", "DEAD", "EXITED", "PAUSED", "REMOVING", "RESTARTING", "RUNNING"] }, "configure": { "type": "string", "enum": ["CREATED", "DEAD", "EXITED", "PAUSED", "REMOVING", "RESTARTING", "RUNNING"] }, "migrate": { "type": "string", "enum": ["CREATED", "DEAD", "EXITED", "PAUSED", "REMOVING", "RESTARTING", "RUNNING"] }, "seed": { "type": "string", "enum": ["CREATED", "DEAD", "EXITED", "PAUSED", "REMOVING", "RESTARTING", "RUNNING"] }, "deploy": { "type": "string", "enum": ["CREATED", "DEAD", "EXITED", "PAUSED", "REMOVING", "RESTARTING", "RUNNING"] } }, "example": { "clone": "RUNNING", "configure": "RUNNING", "migrate": "RUNNING", "deploy": "CREATED" } }, "UpdateRunStatusResponse": { "type": "object", "properties": { "message": { "type": "string", "enum": ["ok"] } }, "required": ["message"] }, "ApiKeyResponse": { "type": "object", "properties": { "api_key": { "type": "string", "nullable": true }, "id": { "type": "string", "nullable": true }, "type": { "type": "string", "enum": ["legacy", "publishable", "secret"], "nullable": true }, "prefix": { "type": "string", "nullable": true }, "name": { "type": "string" }, "description": { "type": "string", "nullable": true }, "hash": { "type": "string", "nullable": true }, "secret_jwt_template": { "type": "object", "additionalProperties": {}, "nullable": true }, "inserted_at": { "type": "string", "format": "date-time", "nullable": true }, "updated_at": { "type": "string", "format": "date-time", "nullable": true } }, "required": ["name"] }, "LegacyApiKeysResponse": { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": ["enabled"] }, "CreateApiKeyBody": { "type": "object", "properties": { "type": { "type": "string", "enum": ["publishable", "secret"] }, "name": { "type": "string", "minLength": 4, "maxLength": 64, "pattern": "^[a-z_][a-z0-9_]+$" }, "description": { "type": "string", "nullable": true }, "secret_jwt_template": { "type": "object", "additionalProperties": {}, "nullable": true } }, "required": ["type", "name"], "example": { "type": "secret", "name": "ci_secret_key", "description": "CI deploy key" } }, "UpdateApiKeyBody": { "type": "object", "properties": { "name": { "type": "string", "minLength": 4, "maxLength": 64, "pattern": "^[a-z_][a-z0-9_]+$" }, "description": { "type": "string", "nullable": true }, "secret_jwt_template": { "type": "object", "additionalProperties": {}, "nullable": true } }, "example": { "name": "ci_secret_key_rotated", "description": "Rotated after March release" } }, "CreateBranchBody": { "type": "object", "properties": { "branch_name": { "type": "string", "minLength": 1 }, "git_branch": { "type": "string" }, "is_default": { "type": "boolean" }, "persistent": { "type": "boolean" }, "region": { "type": "string" }, "desired_instance_size": { "type": "string", "enum": [ "pico", "nano", "micro", "small", "medium", "large", "xlarge", "2xlarge", "4xlarge", "8xlarge", "12xlarge", "16xlarge", "24xlarge", "24xlarge_optimized_memory", "24xlarge_optimized_cpu", "24xlarge_high_memory", "48xlarge", "48xlarge_optimized_memory", "48xlarge_optimized_cpu", "48xlarge_high_memory" ] }, "release_channel": { "type": "string", "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"], "description": "Release channel. If not provided, GA will be used." }, "postgres_engine": { "type": "string", "enum": ["15", "17", "17-oriole"], "description": "Postgres engine version. If not provided, the latest version will be used." }, "secrets": { "type": "object", "additionalProperties": { "type": "string" } }, "with_data": { "type": "boolean" }, "notify_url": { "type": "string", "format": "uri", "description": "HTTP endpoint to receive branch status updates." } }, "required": ["branch_name"], "example": { "branch_name": "preview-login-page", "git_branch": "feature/login-page", "persistent": true, "with_data": false, "notify_url": "https://example.com/webhooks/branches" } }, "UpdateCustomHostnameResponse": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "1_not_started", "2_initiated", "3_challenge_verified", "4_origin_setup_completed", "5_services_reconfigured" ] }, "custom_hostname": { "type": "string" }, "data": { "type": "object", "properties": { "success": { "type": "boolean" }, "errors": { "type": "array", "items": { "description": "Any JSON-serializable value" } }, "messages": { "type": "array", "items": { "description": "Any JSON-serializable value" } }, "result": { "type": "object", "properties": { "id": { "type": "string" }, "hostname": { "type": "string" }, "ssl": { "type": "object", "properties": { "status": { "type": "string" }, "validation_records": { "type": "array", "items": { "type": "object", "properties": { "txt_name": { "type": "string" }, "txt_value": { "type": "string" } }, "required": ["txt_name", "txt_value"] } }, "validation_errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] } } }, "required": ["status", "validation_records"] }, "ownership_verification": { "type": "object", "properties": { "type": { "type": "string" }, "name": { "type": "string" }, "value": { "type": "string" } }, "required": ["type", "name", "value"] }, "custom_origin_server": { "type": "string" }, "verification_errors": { "type": "array", "items": { "type": "string" } }, "status": { "type": "string" } }, "required": [ "id", "hostname", "ssl", "ownership_verification", "custom_origin_server", "status" ] } }, "required": ["success", "errors", "messages", "result"] } }, "required": ["status", "custom_hostname", "data"] }, "UpdateCustomHostnameBody": { "type": "object", "properties": { "custom_hostname": { "type": "string", "maxLength": 253, "minLength": 1 } }, "required": ["custom_hostname"], "example": { "custom_hostname": "docs.example.com" } }, "JitAccessResponse": { "type": "object", "properties": { "user_id": { "type": "string", "format": "uuid" }, "user_roles": { "type": "array", "items": { "type": "object", "properties": { "role": { "type": "string", "minLength": 1 }, "expires_at": { "type": "number" }, "allowed_networks": { "type": "object", "properties": { "allowed_cidrs": { "type": "array", "items": { "type": "object", "properties": { "cidr": { "type": "string" } }, "required": ["cidr"] } }, "allowed_cidrs_v6": { "type": "array", "items": { "type": "object", "properties": { "cidr": { "type": "string" } }, "required": ["cidr"] } } } } }, "required": ["role"] } } }, "required": ["user_id", "user_roles"] }, "JitAccessRequestRequest": { "type": "object", "properties": { "state": { "type": "string", "enum": ["enabled", "disabled", "unavailable"] } }, "required": ["state"], "example": { "state": "enabled" } }, "NetworkBanResponse": { "type": "object", "properties": { "banned_ipv4_addresses": { "type": "array", "items": { "type": "string" } } }, "required": ["banned_ipv4_addresses"] }, "NetworkBanResponseEnriched": { "type": "object", "properties": { "banned_ipv4_addresses": { "type": "array", "items": { "type": "object", "properties": { "banned_address": { "type": "string" }, "identifier": { "type": "string" }, "type": { "type": "string" } }, "required": ["banned_address", "identifier", "type"] } } }, "required": ["banned_ipv4_addresses"] }, "RemoveNetworkBanRequest": { "type": "object", "properties": { "ipv4_addresses": { "type": "array", "items": { "type": "string" }, "description": "List of IP addresses to unban." }, "requester_ip": { "default": false, "type": "boolean", "description": "Include requester's public IP in the list of addresses to unban." }, "identifier": { "type": "string" } }, "required": ["ipv4_addresses"], "example": { "ipv4_addresses": ["203.0.113.10"], "requester_ip": false } }, "NetworkRestrictionsResponse": { "type": "object", "properties": { "entitlement": { "type": "string", "enum": ["disallowed", "allowed"] }, "config": { "type": "object", "properties": { "dbAllowedCidrs": { "type": "array", "items": { "type": "string" } }, "dbAllowedCidrsV6": { "type": "array", "items": { "type": "string" } } }, "description": "At any given point in time, this is the config that the user has requested be applied to their project. The `status` field indicates if it has been applied to the project, or is pending. When an updated config is received, the applied config is moved to `old_config`." }, "old_config": { "type": "object", "properties": { "dbAllowedCidrs": { "type": "array", "items": { "type": "string" } }, "dbAllowedCidrsV6": { "type": "array", "items": { "type": "string" } } }, "example": { "dbAllowedCidrs": ["203.0.113.0/24"], "dbAllowedCidrsV6": ["2001:db8::/32"] }, "description": "Populated when a new config has been received, but not registered as successfully applied to a project." }, "status": { "type": "string", "enum": ["stored", "applied"] }, "updated_at": { "type": "string", "format": "date-time" }, "applied_at": { "type": "string", "format": "date-time" } }, "required": ["entitlement", "config", "status"] }, "NetworkRestrictionsRequest": { "type": "object", "properties": { "dbAllowedCidrs": { "type": "array", "items": { "type": "string" } }, "dbAllowedCidrsV6": { "type": "array", "items": { "type": "string" } } }, "example": { "dbAllowedCidrs": ["203.0.113.0/24"], "dbAllowedCidrsV6": ["2001:db8::/32"] } }, "NetworkRestrictionsPatchRequest": { "type": "object", "properties": { "add": { "type": "object", "properties": { "dbAllowedCidrs": { "type": "array", "items": { "type": "string" } }, "dbAllowedCidrsV6": { "type": "array", "items": { "type": "string" } } } }, "remove": { "type": "object", "properties": { "dbAllowedCidrs": { "type": "array", "items": { "type": "string" } }, "dbAllowedCidrsV6": { "type": "array", "items": { "type": "string" } } } } }, "example": { "add": { "dbAllowedCidrs": ["203.0.113.0/24"] }, "remove": { "dbAllowedCidrs": ["198.51.100.0/24"] } } }, "NetworkRestrictionsV2Response": { "type": "object", "properties": { "entitlement": { "type": "string", "enum": ["disallowed", "allowed"] }, "config": { "type": "object", "properties": { "dbAllowedCidrs": { "type": "array", "items": { "type": "object", "properties": { "address": { "type": "string" }, "type": { "type": "string", "enum": ["v4", "v6"] } }, "required": ["address", "type"] } } }, "description": "At any given point in time, this is the config that the user has requested be applied to their project. The `status` field indicates if it has been applied to the project, or is pending. When an updated config is received, the applied config is moved to `old_config`." }, "old_config": { "type": "object", "properties": { "dbAllowedCidrs": { "type": "array", "items": { "type": "object", "properties": { "address": { "type": "string" }, "type": { "type": "string", "enum": ["v4", "v6"] } }, "required": ["address", "type"] } } }, "description": "Populated when a new config has been received, but not registered as successfully applied to a project." }, "updated_at": { "type": "string", "format": "date-time" }, "applied_at": { "type": "string", "format": "date-time" }, "status": { "type": "string", "enum": ["stored", "applied"] } }, "required": ["entitlement", "config", "status"] }, "PgsodiumConfigResponse": { "type": "object", "properties": { "root_key": { "type": "string" } }, "required": ["root_key"] }, "UpdatePgsodiumConfigBody": { "type": "object", "properties": { "root_key": { "type": "string" } }, "required": ["root_key"], "example": { "root_key": "MDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWY=" } }, "PostgrestConfigWithJWTSecretResponse": { "type": "object", "properties": { "db_schema": { "type": "string" }, "max_rows": { "type": "integer" }, "db_extra_search_path": { "type": "string" }, "db_pool": { "type": "integer", "nullable": true, "description": "If `null`, the value is automatically configured based on compute size." }, "jwt_secret": { "type": "string" } }, "required": ["db_schema", "max_rows", "db_extra_search_path", "db_pool"] }, "V1UpdatePostgrestConfigBody": { "type": "object", "properties": { "db_extra_search_path": { "type": "string" }, "db_schema": { "type": "string" }, "max_rows": { "type": "integer", "minimum": 0, "maximum": 1000000 }, "db_pool": { "type": "integer", "minimum": 0, "maximum": 1000 } }, "example": { "db_schema": "public,storage", "db_pool": 20, "max_rows": 1000 } }, "V1PostgrestConfigResponse": { "type": "object", "properties": { "db_schema": { "type": "string" }, "max_rows": { "type": "integer" }, "db_extra_search_path": { "type": "string" }, "db_pool": { "type": "integer", "nullable": true, "description": "If `null`, the value is automatically configured based on compute size." } }, "required": ["db_schema", "max_rows", "db_extra_search_path", "db_pool"] }, "V1ProjectRefResponse": { "type": "object", "properties": { "id": { "type": "integer" }, "ref": { "type": "string" }, "name": { "type": "string" } }, "required": ["id", "ref", "name"] }, "V1UpdateProjectBody": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256 } }, "required": ["name"], "example": { "name": "Acme Platform" } }, "SecretResponse": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["name", "value"] }, "CreateSecretBody": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "maxLength": 256, "pattern": "^(?!SUPABASE_).*", "description": "Secret name must not start with the SUPABASE_ prefix." }, "value": { "type": "string", "maxLength": 24576 } }, "required": ["name", "value"] }, "example": [ { "name": "OPENAI_API_KEY", "value": "sk-example-secret" }, { "name": "STRIPE_WEBHOOK_SECRET", "value": "whsec_example" } ] }, "DeleteSecretsBody": { "type": "array", "items": { "type": "string" }, "example": ["OPENAI_API_KEY"] }, "SslEnforcementResponse": { "type": "object", "properties": { "currentConfig": { "type": "object", "properties": { "database": { "type": "boolean" } }, "required": ["database"] }, "appliedSuccessfully": { "type": "boolean" } }, "required": ["currentConfig", "appliedSuccessfully"] }, "SslEnforcementRequest": { "type": "object", "properties": { "requestedConfig": { "type": "object", "properties": { "database": { "type": "boolean" } }, "required": ["database"] } }, "required": ["requestedConfig"], "example": { "requestedConfig": { "database": true } } }, "TypescriptResponse": { "type": "object", "properties": { "types": { "type": "string" } }, "required": ["types"] }, "VanitySubdomainConfigResponse": { "type": "object", "properties": { "status": { "type": "string", "enum": ["not-used", "custom-domain-used", "active"] }, "custom_domain": { "type": "string", "minLength": 1 } }, "required": ["status"] }, "VanitySubdomainBody": { "type": "object", "properties": { "vanity_subdomain": { "type": "string", "maxLength": 63 } }, "required": ["vanity_subdomain"], "example": { "vanity_subdomain": "acme-prod" } }, "SubdomainAvailabilityResponse": { "type": "object", "properties": { "available": { "type": "boolean" } }, "required": ["available"] }, "ActivateVanitySubdomainResponse": { "type": "object", "properties": { "custom_domain": { "type": "string" } }, "required": ["custom_domain"] }, "UpgradeDatabaseBody": { "type": "object", "properties": { "target_version": { "type": "string" }, "release_channel": { "type": "string", "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] } }, "required": ["target_version"], "example": { "target_version": "17", "release_channel": "ga" } }, "ProjectUpgradeInitiateResponse": { "type": "object", "properties": { "tracking_id": { "type": "string" } }, "required": ["tracking_id"] }, "ProjectUpgradeEligibilityResponse": { "type": "object", "properties": { "eligible": { "type": "boolean" }, "current_app_version": { "type": "string" }, "current_app_version_release_channel": { "type": "string", "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] }, "latest_app_version": { "type": "string" }, "target_upgrade_versions": { "type": "array", "items": { "type": "object", "properties": { "postgres_version": { "type": "string", "enum": ["13", "14", "15", "17", "17-oriole"] }, "release_channel": { "type": "string", "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] }, "app_version": { "type": "string" } }, "required": ["postgres_version", "release_channel", "app_version"] } }, "duration_estimate_hours": { "type": "number" }, "legacy_auth_custom_roles": { "type": "array", "items": { "type": "string" } }, "objects_to_be_dropped": { "type": "array", "items": { "type": "string" }, "deprecated": true, "description": "Use validation_errors instead." }, "unsupported_extensions": { "type": "array", "items": { "type": "string" }, "deprecated": true, "description": "Use validation_errors instead." }, "user_defined_objects_in_internal_schemas": { "type": "array", "items": { "type": "string" }, "deprecated": true, "description": "Use validation_errors instead." }, "validation_errors": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["objects_depending_on_pg_cron"] }, "dependents": { "type": "array", "items": { "type": "string" } } }, "required": ["type", "dependents"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["indexes_referencing_ll_to_earth"] }, "schema_name": { "type": "string" }, "table_name": { "type": "string" }, "index_name": { "type": "string" } }, "required": ["type", "schema_name", "table_name", "index_name"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["function_using_obsolete_lang"] }, "schema_name": { "type": "string" }, "function_name": { "type": "string" }, "lang_name": { "type": "string" } }, "required": ["type", "schema_name", "function_name", "lang_name"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["unsupported_extension"] }, "extension_name": { "type": "string" } }, "required": ["type", "extension_name"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["unsupported_fdw_handler"] }, "fdw_name": { "type": "string" }, "fdw_handler_name": { "type": "string" } }, "required": ["type", "fdw_name", "fdw_handler_name"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["unlogged_table_with_persistent_sequence"] }, "schema_name": { "type": "string" }, "table_name": { "type": "string" }, "sequence_name": { "type": "string" } }, "required": ["type", "schema_name", "table_name", "sequence_name"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["user_defined_objects_in_internal_schemas"] }, "obj_type": { "type": "string", "enum": ["table", "function"] }, "schema_name": { "type": "string" }, "obj_name": { "type": "string" } }, "required": ["type", "obj_type", "schema_name", "obj_name"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["active_replication_slot"] }, "slot_name": { "type": "string" } }, "required": ["type", "slot_name"] } ] } } }, "required": [ "eligible", "current_app_version", "current_app_version_release_channel", "latest_app_version", "target_upgrade_versions", "duration_estimate_hours", "legacy_auth_custom_roles", "objects_to_be_dropped", "unsupported_extensions", "user_defined_objects_in_internal_schemas", "validation_errors" ] }, "DatabaseUpgradeStatusResponse": { "type": "object", "properties": { "databaseUpgradeStatus": { "type": "object", "properties": { "initiated_at": { "type": "string" }, "latest_status_at": { "type": "string" }, "target_version": { "type": "number" }, "error": { "type": "string", "enum": [ "1_upgraded_instance_launch_failed", "2_volume_detachchment_from_upgraded_instance_failed", "3_volume_attachment_to_original_instance_failed", "4_data_upgrade_initiation_failed", "5_data_upgrade_completion_failed", "6_volume_detachchment_from_original_instance_failed", "7_volume_attachment_to_upgraded_instance_failed", "8_upgrade_completion_failed", "9_post_physical_backup_failed" ] }, "progress": { "type": "string", "enum": [ "0_requested", "1_started", "2_launched_upgraded_instance", "3_detached_volume_from_upgraded_instance", "4_attached_volume_to_original_instance", "5_initiated_data_upgrade", "6_completed_data_upgrade", "7_detached_volume_from_original_instance", "8_attached_volume_to_upgraded_instance", "9_completed_upgrade", "10_completed_post_physical_backup" ] }, "status": { "type": "number" } }, "required": ["initiated_at", "latest_status_at", "target_version", "status"], "nullable": true } }, "required": ["databaseUpgradeStatus"] }, "ReadOnlyStatusResponse": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "override_enabled": { "type": "boolean" }, "override_active_until": { "type": "string" } }, "required": ["enabled", "override_enabled", "override_active_until"] }, "SetUpReadReplicaBody": { "type": "object", "properties": { "read_replica_region": { "type": "string", "enum": [ "us-east-1", "us-east-2", "us-west-1", "us-west-2", "ap-east-1", "ap-southeast-1", "ap-northeast-1", "ap-northeast-2", "ap-southeast-2", "eu-west-1", "eu-west-2", "eu-west-3", "eu-north-1", "eu-central-1", "eu-central-2", "ca-central-1", "ap-south-1", "sa-east-1" ], "description": "Region you want your read replica to reside in" } }, "required": ["read_replica_region"], "example": { "read_replica_region": "us-west-1" } }, "RemoveReadReplicaBody": { "type": "object", "properties": { "database_identifier": { "type": "string" } }, "required": ["database_identifier"], "example": { "database_identifier": "abcdefghijklmnopqrst-rr-us-west-1-abcde" } }, "V1ServiceHealthResponse": { "type": "object", "properties": { "name": { "type": "string", "enum": [ "auth", "db", "db_postgres_user", "pooler", "realtime", "rest", "storage", "pg_bouncer" ] }, "healthy": { "type": "boolean", "deprecated": true, "description": "Deprecated. Use `status` instead." }, "status": { "type": "string", "enum": ["COMING_UP", "ACTIVE_HEALTHY", "UNHEALTHY"] }, "info": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string", "enum": ["GoTrue"] }, "version": { "type": "string" }, "description": { "type": "string" } }, "required": ["name", "version", "description"] }, { "type": "object", "properties": { "healthy": { "type": "boolean", "deprecated": true, "description": "Deprecated. Use `status` instead." }, "db_connected": { "type": "boolean" }, "replication_connected": { "type": "boolean" }, "connected_cluster": { "type": "integer" } }, "required": [ "healthy", "db_connected", "replication_connected", "connected_cluster" ] }, { "type": "object", "properties": { "db_schema": { "type": "string" } }, "required": ["db_schema"] } ] }, "error": { "type": "string" } }, "required": ["name", "healthy", "status"] }, "SigningKeyResponse": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "algorithm": { "type": "string", "enum": ["EdDSA", "ES256", "RS256", "HS256"] }, "status": { "type": "string", "enum": ["in_use", "previously_used", "revoked", "standby"] }, "public_jwk": { "nullable": true }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" } }, "required": ["id", "algorithm", "status", "created_at", "updated_at"], "additionalProperties": false }, "CreateSigningKeyBody": { "type": "object", "properties": { "algorithm": { "type": "string", "enum": ["EdDSA", "ES256", "RS256", "HS256"] }, "status": { "type": "string", "enum": ["in_use", "standby"] }, "private_jwk": { "discriminator": { "propertyName": "kty" }, "oneOf": [ { "type": "object", "properties": { "kid": { "type": "string", "format": "uuid" }, "use": { "type": "string", "enum": ["sig"] }, "key_ops": { "type": "array", "items": { "type": "string", "enum": ["sign", "verify"] }, "minItems": 2, "maxItems": 2 }, "ext": { "type": "boolean", "enum": [true] }, "kty": { "type": "string", "enum": ["RSA"] }, "alg": { "type": "string", "enum": ["RS256"] }, "n": { "type": "string" }, "e": { "type": "string", "enum": ["AQAB"] }, "d": { "type": "string" }, "p": { "type": "string" }, "q": { "type": "string" }, "dp": { "type": "string" }, "dq": { "type": "string" }, "qi": { "type": "string" } }, "required": ["kty", "n", "e", "d", "p", "q", "dp", "dq", "qi"], "additionalProperties": false }, { "type": "object", "properties": { "kid": { "type": "string", "format": "uuid" }, "use": { "type": "string", "enum": ["sig"] }, "key_ops": { "type": "array", "items": { "type": "string", "enum": ["sign", "verify"] }, "minItems": 2, "maxItems": 2 }, "ext": { "type": "boolean", "enum": [true] }, "kty": { "type": "string", "enum": ["EC"] }, "alg": { "type": "string", "enum": ["ES256"] }, "crv": { "type": "string", "enum": ["P-256"] }, "x": { "type": "string" }, "y": { "type": "string" }, "d": { "type": "string" } }, "required": ["kty", "crv", "x", "y", "d"], "additionalProperties": false }, { "type": "object", "properties": { "kid": { "type": "string", "format": "uuid" }, "use": { "type": "string", "enum": ["sig"] }, "key_ops": { "type": "array", "items": { "type": "string", "enum": ["sign", "verify"] }, "minItems": 2, "maxItems": 2 }, "ext": { "type": "boolean", "enum": [true] }, "kty": { "type": "string", "enum": ["OKP"] }, "alg": { "type": "string", "enum": ["EdDSA"] }, "crv": { "type": "string", "enum": ["Ed25519"] }, "x": { "type": "string" }, "d": { "type": "string" } }, "required": ["kty", "crv", "x", "d"], "additionalProperties": false }, { "type": "object", "properties": { "kid": { "type": "string", "format": "uuid" }, "use": { "type": "string", "enum": ["sig"] }, "key_ops": { "type": "array", "items": { "type": "string", "enum": ["sign", "verify"] }, "minItems": 2, "maxItems": 2 }, "ext": { "type": "boolean", "enum": [true] }, "kty": { "type": "string", "enum": ["oct"] }, "alg": { "type": "string", "enum": ["HS256"] }, "k": { "type": "string", "minLength": 16 } }, "required": ["kty", "k"], "additionalProperties": false } ] } }, "required": ["algorithm"], "additionalProperties": false, "example": { "algorithm": "RS256", "status": "standby" } }, "SigningKeysResponse": { "type": "object", "properties": { "keys": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "algorithm": { "type": "string", "enum": ["EdDSA", "ES256", "RS256", "HS256"] }, "status": { "type": "string", "enum": ["in_use", "previously_used", "revoked", "standby"] }, "public_jwk": { "nullable": true }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" } }, "required": ["id", "algorithm", "status", "created_at", "updated_at"], "additionalProperties": false } } }, "required": ["keys"], "additionalProperties": false }, "UpdateSigningKeyBody": { "type": "object", "properties": { "status": { "type": "string", "enum": ["in_use", "previously_used", "revoked", "standby"] } }, "required": ["status"], "additionalProperties": false, "example": { "status": "standby" } }, "AuthConfigResponse": { "type": "object", "properties": { "api_max_request_duration": { "type": "integer", "nullable": true }, "db_max_pool_size": { "type": "integer", "nullable": true }, "db_max_pool_size_unit": { "type": "string", "enum": ["connections", "percent"], "nullable": true }, "disable_signup": { "type": "boolean", "nullable": true }, "external_anonymous_users_enabled": { "type": "boolean", "nullable": true }, "external_apple_additional_client_ids": { "type": "string", "nullable": true }, "external_apple_client_id": { "type": "string", "nullable": true }, "external_apple_email_optional": { "type": "boolean", "nullable": true }, "external_apple_enabled": { "type": "boolean", "nullable": true }, "external_apple_secret": { "type": "string", "nullable": true }, "external_azure_client_id": { "type": "string", "nullable": true }, "external_azure_email_optional": { "type": "boolean", "nullable": true }, "external_azure_enabled": { "type": "boolean", "nullable": true }, "external_azure_secret": { "type": "string", "nullable": true }, "external_azure_url": { "type": "string", "nullable": true }, "external_bitbucket_client_id": { "type": "string", "nullable": true }, "external_bitbucket_email_optional": { "type": "boolean", "nullable": true }, "external_bitbucket_enabled": { "type": "boolean", "nullable": true }, "external_bitbucket_secret": { "type": "string", "nullable": true }, "external_discord_client_id": { "type": "string", "nullable": true }, "external_discord_email_optional": { "type": "boolean", "nullable": true }, "external_discord_enabled": { "type": "boolean", "nullable": true }, "external_discord_secret": { "type": "string", "nullable": true }, "external_email_enabled": { "type": "boolean", "nullable": true }, "external_facebook_client_id": { "type": "string", "nullable": true }, "external_facebook_email_optional": { "type": "boolean", "nullable": true }, "external_facebook_enabled": { "type": "boolean", "nullable": true }, "external_facebook_secret": { "type": "string", "nullable": true }, "external_figma_client_id": { "type": "string", "nullable": true }, "external_figma_email_optional": { "type": "boolean", "nullable": true }, "external_figma_enabled": { "type": "boolean", "nullable": true }, "external_figma_secret": { "type": "string", "nullable": true }, "external_github_client_id": { "type": "string", "nullable": true }, "external_github_email_optional": { "type": "boolean", "nullable": true }, "external_github_enabled": { "type": "boolean", "nullable": true }, "external_github_secret": { "type": "string", "nullable": true }, "external_gitlab_client_id": { "type": "string", "nullable": true }, "external_gitlab_email_optional": { "type": "boolean", "nullable": true }, "external_gitlab_enabled": { "type": "boolean", "nullable": true }, "external_gitlab_secret": { "type": "string", "nullable": true }, "external_gitlab_url": { "type": "string", "nullable": true }, "external_google_additional_client_ids": { "type": "string", "nullable": true }, "external_google_client_id": { "type": "string", "nullable": true }, "external_google_email_optional": { "type": "boolean", "nullable": true }, "external_google_enabled": { "type": "boolean", "nullable": true }, "external_google_secret": { "type": "string", "nullable": true }, "external_google_skip_nonce_check": { "type": "boolean", "nullable": true }, "external_kakao_client_id": { "type": "string", "nullable": true }, "external_kakao_email_optional": { "type": "boolean", "nullable": true }, "external_kakao_enabled": { "type": "boolean", "nullable": true }, "external_kakao_secret": { "type": "string", "nullable": true }, "external_keycloak_client_id": { "type": "string", "nullable": true }, "external_keycloak_email_optional": { "type": "boolean", "nullable": true }, "external_keycloak_enabled": { "type": "boolean", "nullable": true }, "external_keycloak_secret": { "type": "string", "nullable": true }, "external_keycloak_url": { "type": "string", "nullable": true }, "external_linkedin_oidc_client_id": { "type": "string", "nullable": true }, "external_linkedin_oidc_email_optional": { "type": "boolean", "nullable": true }, "external_linkedin_oidc_enabled": { "type": "boolean", "nullable": true }, "external_linkedin_oidc_secret": { "type": "string", "nullable": true }, "external_slack_oidc_client_id": { "type": "string", "nullable": true }, "external_slack_oidc_email_optional": { "type": "boolean", "nullable": true }, "external_slack_oidc_enabled": { "type": "boolean", "nullable": true }, "external_slack_oidc_secret": { "type": "string", "nullable": true }, "external_notion_client_id": { "type": "string", "nullable": true }, "external_notion_email_optional": { "type": "boolean", "nullable": true }, "external_notion_enabled": { "type": "boolean", "nullable": true }, "external_notion_secret": { "type": "string", "nullable": true }, "external_phone_enabled": { "type": "boolean", "nullable": true }, "external_slack_client_id": { "type": "string", "nullable": true }, "external_slack_email_optional": { "type": "boolean", "nullable": true }, "external_slack_enabled": { "type": "boolean", "nullable": true }, "external_slack_secret": { "type": "string", "nullable": true }, "external_spotify_client_id": { "type": "string", "nullable": true }, "external_spotify_email_optional": { "type": "boolean", "nullable": true }, "external_spotify_enabled": { "type": "boolean", "nullable": true }, "external_spotify_secret": { "type": "string", "nullable": true }, "external_twitch_client_id": { "type": "string", "nullable": true }, "external_twitch_email_optional": { "type": "boolean", "nullable": true }, "external_twitch_enabled": { "type": "boolean", "nullable": true }, "external_twitch_secret": { "type": "string", "nullable": true }, "external_twitter_client_id": { "type": "string", "nullable": true }, "external_twitter_email_optional": { "type": "boolean", "nullable": true }, "external_twitter_enabled": { "type": "boolean", "nullable": true }, "external_twitter_secret": { "type": "string", "nullable": true }, "external_x_client_id": { "type": "string", "nullable": true }, "external_x_email_optional": { "type": "boolean", "nullable": true }, "external_x_enabled": { "type": "boolean", "nullable": true }, "external_x_secret": { "type": "string", "nullable": true }, "external_workos_client_id": { "type": "string", "nullable": true }, "external_workos_enabled": { "type": "boolean", "nullable": true }, "external_workos_secret": { "type": "string", "nullable": true }, "external_workos_url": { "type": "string", "nullable": true }, "external_web3_solana_enabled": { "type": "boolean", "nullable": true }, "external_web3_ethereum_enabled": { "type": "boolean", "nullable": true }, "external_zoom_client_id": { "type": "string", "nullable": true }, "external_zoom_email_optional": { "type": "boolean", "nullable": true }, "external_zoom_enabled": { "type": "boolean", "nullable": true }, "external_zoom_secret": { "type": "string", "nullable": true }, "hook_custom_access_token_enabled": { "type": "boolean", "nullable": true }, "hook_custom_access_token_uri": { "type": "string", "nullable": true }, "hook_custom_access_token_secrets": { "type": "string", "nullable": true }, "hook_mfa_verification_attempt_enabled": { "type": "boolean", "nullable": true }, "hook_mfa_verification_attempt_uri": { "type": "string", "nullable": true }, "hook_mfa_verification_attempt_secrets": { "type": "string", "nullable": true }, "hook_password_verification_attempt_enabled": { "type": "boolean", "nullable": true }, "hook_password_verification_attempt_uri": { "type": "string", "nullable": true }, "hook_password_verification_attempt_secrets": { "type": "string", "nullable": true }, "hook_send_sms_enabled": { "type": "boolean", "nullable": true }, "hook_send_sms_uri": { "type": "string", "nullable": true }, "hook_send_sms_secrets": { "type": "string", "nullable": true }, "hook_send_email_enabled": { "type": "boolean", "nullable": true }, "hook_send_email_uri": { "type": "string", "nullable": true }, "hook_send_email_secrets": { "type": "string", "nullable": true }, "hook_before_user_created_enabled": { "type": "boolean", "nullable": true }, "hook_before_user_created_uri": { "type": "string", "nullable": true }, "hook_before_user_created_secrets": { "type": "string", "nullable": true }, "hook_after_user_created_enabled": { "type": "boolean", "nullable": true }, "hook_after_user_created_uri": { "type": "string", "nullable": true }, "hook_after_user_created_secrets": { "type": "string", "nullable": true }, "jwt_exp": { "type": "integer", "nullable": true }, "mailer_allow_unverified_email_sign_ins": { "type": "boolean", "nullable": true }, "mailer_autoconfirm": { "type": "boolean", "nullable": true }, "mailer_otp_exp": { "type": "integer" }, "mailer_otp_length": { "type": "integer", "nullable": true }, "mailer_secure_email_change_enabled": { "type": "boolean", "nullable": true }, "mailer_subjects_confirmation": { "type": "string", "nullable": true }, "mailer_subjects_email_change": { "type": "string", "nullable": true }, "mailer_subjects_invite": { "type": "string", "nullable": true }, "mailer_subjects_magic_link": { "type": "string", "nullable": true }, "mailer_subjects_reauthentication": { "type": "string", "nullable": true }, "mailer_subjects_recovery": { "type": "string", "nullable": true }, "mailer_subjects_password_changed_notification": { "type": "string", "nullable": true }, "mailer_subjects_email_changed_notification": { "type": "string", "nullable": true }, "mailer_subjects_phone_changed_notification": { "type": "string", "nullable": true }, "mailer_subjects_mfa_factor_enrolled_notification": { "type": "string", "nullable": true }, "mailer_subjects_mfa_factor_unenrolled_notification": { "type": "string", "nullable": true }, "mailer_subjects_identity_linked_notification": { "type": "string", "nullable": true }, "mailer_subjects_identity_unlinked_notification": { "type": "string", "nullable": true }, "mailer_templates_confirmation_content": { "type": "string", "nullable": true }, "mailer_templates_email_change_content": { "type": "string", "nullable": true }, "mailer_templates_invite_content": { "type": "string", "nullable": true }, "mailer_templates_magic_link_content": { "type": "string", "nullable": true }, "mailer_templates_reauthentication_content": { "type": "string", "nullable": true }, "mailer_templates_recovery_content": { "type": "string", "nullable": true }, "mailer_templates_password_changed_notification_content": { "type": "string", "nullable": true }, "mailer_templates_email_changed_notification_content": { "type": "string", "nullable": true }, "mailer_templates_phone_changed_notification_content": { "type": "string", "nullable": true }, "mailer_templates_mfa_factor_enrolled_notification_content": { "type": "string", "nullable": true }, "mailer_templates_mfa_factor_unenrolled_notification_content": { "type": "string", "nullable": true }, "mailer_templates_identity_linked_notification_content": { "type": "string", "nullable": true }, "mailer_templates_identity_unlinked_notification_content": { "type": "string", "nullable": true }, "mailer_notifications_password_changed_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_email_changed_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_phone_changed_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_mfa_factor_enrolled_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_mfa_factor_unenrolled_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_identity_linked_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_identity_unlinked_enabled": { "type": "boolean", "nullable": true }, "mfa_max_enrolled_factors": { "type": "integer", "nullable": true }, "mfa_totp_enroll_enabled": { "type": "boolean", "nullable": true }, "mfa_totp_verify_enabled": { "type": "boolean", "nullable": true }, "mfa_phone_enroll_enabled": { "type": "boolean", "nullable": true }, "mfa_phone_verify_enabled": { "type": "boolean", "nullable": true }, "mfa_web_authn_enroll_enabled": { "type": "boolean", "nullable": true }, "mfa_web_authn_verify_enabled": { "type": "boolean", "nullable": true }, "passkey_enabled": { "type": "boolean" }, "webauthn_rp_display_name": { "type": "string", "nullable": true }, "webauthn_rp_id": { "type": "string", "nullable": true }, "webauthn_rp_origins": { "type": "string", "nullable": true }, "mfa_phone_otp_length": { "type": "integer" }, "mfa_phone_template": { "type": "string", "nullable": true }, "mfa_phone_max_frequency": { "type": "integer", "nullable": true }, "nimbus_oauth_client_id": { "type": "string", "nullable": true }, "nimbus_oauth_email_optional": { "type": "boolean", "nullable": true }, "nimbus_oauth_client_secret": { "type": "string", "nullable": true }, "password_hibp_enabled": { "type": "boolean", "nullable": true }, "password_min_length": { "type": "integer", "nullable": true }, "password_required_characters": { "type": "string", "enum": [ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789", "abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789", "abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789:!@#$%^&*()_+-=[]{};'\\\\:\"|<>?,./`~", "" ], "nullable": true }, "rate_limit_anonymous_users": { "type": "integer", "nullable": true }, "rate_limit_email_sent": { "type": "integer", "nullable": true }, "rate_limit_sms_sent": { "type": "integer", "nullable": true }, "rate_limit_token_refresh": { "type": "integer", "nullable": true }, "rate_limit_verify": { "type": "integer", "nullable": true }, "rate_limit_otp": { "type": "integer", "nullable": true }, "rate_limit_web3": { "type": "integer", "nullable": true }, "refresh_token_rotation_enabled": { "type": "boolean", "nullable": true }, "saml_enabled": { "type": "boolean", "nullable": true }, "saml_external_url": { "type": "string", "nullable": true }, "saml_allow_encrypted_assertions": { "type": "boolean", "nullable": true }, "security_sb_forwarded_for_enabled": { "type": "boolean", "nullable": true }, "security_captcha_enabled": { "type": "boolean", "nullable": true }, "security_captcha_provider": { "type": "string", "enum": ["turnstile", "hcaptcha"], "nullable": true }, "security_captcha_secret": { "type": "string", "nullable": true }, "security_manual_linking_enabled": { "type": "boolean", "nullable": true }, "security_refresh_token_reuse_interval": { "type": "integer", "nullable": true }, "security_update_password_require_reauthentication": { "type": "boolean", "nullable": true }, "sessions_inactivity_timeout": { "type": "number", "nullable": true }, "sessions_single_per_user": { "type": "boolean", "nullable": true }, "sessions_tags": { "type": "string", "nullable": true }, "sessions_timebox": { "type": "number", "nullable": true }, "site_url": { "type": "string", "nullable": true }, "sms_autoconfirm": { "type": "boolean", "nullable": true }, "sms_max_frequency": { "type": "integer", "nullable": true }, "sms_messagebird_access_key": { "type": "string", "nullable": true }, "sms_messagebird_originator": { "type": "string", "nullable": true }, "sms_otp_exp": { "type": "integer", "nullable": true }, "sms_otp_length": { "type": "integer" }, "sms_provider": { "type": "string", "enum": ["messagebird", "textlocal", "twilio", "twilio_verify", "vonage"], "nullable": true }, "sms_template": { "type": "string", "nullable": true }, "sms_test_otp": { "type": "string", "nullable": true }, "sms_test_otp_valid_until": { "type": "string", "format": "date-time", "nullable": true }, "sms_textlocal_api_key": { "type": "string", "nullable": true }, "sms_textlocal_sender": { "type": "string", "nullable": true }, "sms_twilio_account_sid": { "type": "string", "nullable": true }, "sms_twilio_auth_token": { "type": "string", "nullable": true }, "sms_twilio_content_sid": { "type": "string", "nullable": true }, "sms_twilio_message_service_sid": { "type": "string", "nullable": true }, "sms_twilio_verify_account_sid": { "type": "string", "nullable": true }, "sms_twilio_verify_auth_token": { "type": "string", "nullable": true }, "sms_twilio_verify_message_service_sid": { "type": "string", "nullable": true }, "sms_vonage_api_key": { "type": "string", "nullable": true }, "sms_vonage_api_secret": { "type": "string", "nullable": true }, "sms_vonage_from": { "type": "string", "nullable": true }, "smtp_admin_email": { "type": "string", "format": "email", "nullable": true }, "smtp_host": { "type": "string", "nullable": true }, "smtp_max_frequency": { "type": "integer", "nullable": true }, "smtp_pass": { "type": "string", "nullable": true }, "smtp_port": { "type": "string", "nullable": true }, "smtp_sender_name": { "type": "string", "nullable": true }, "smtp_user": { "type": "string", "nullable": true }, "uri_allow_list": { "type": "string", "nullable": true }, "oauth_server_enabled": { "type": "boolean" }, "oauth_server_allow_dynamic_registration": { "type": "boolean" }, "oauth_server_authorization_path": { "type": "string", "nullable": true }, "custom_oauth_enabled": { "type": "boolean" }, "custom_oauth_max_providers": { "type": "integer" } }, "required": [ "api_max_request_duration", "db_max_pool_size", "db_max_pool_size_unit", "disable_signup", "external_anonymous_users_enabled", "external_apple_additional_client_ids", "external_apple_client_id", "external_apple_email_optional", "external_apple_enabled", "external_apple_secret", "external_azure_client_id", "external_azure_email_optional", "external_azure_enabled", "external_azure_secret", "external_azure_url", "external_bitbucket_client_id", "external_bitbucket_email_optional", "external_bitbucket_enabled", "external_bitbucket_secret", "external_discord_client_id", "external_discord_email_optional", "external_discord_enabled", "external_discord_secret", "external_email_enabled", "external_facebook_client_id", "external_facebook_email_optional", "external_facebook_enabled", "external_facebook_secret", "external_figma_client_id", "external_figma_email_optional", "external_figma_enabled", "external_figma_secret", "external_github_client_id", "external_github_email_optional", "external_github_enabled", "external_github_secret", "external_gitlab_client_id", "external_gitlab_email_optional", "external_gitlab_enabled", "external_gitlab_secret", "external_gitlab_url", "external_google_additional_client_ids", "external_google_client_id", "external_google_email_optional", "external_google_enabled", "external_google_secret", "external_google_skip_nonce_check", "external_kakao_client_id", "external_kakao_email_optional", "external_kakao_enabled", "external_kakao_secret", "external_keycloak_client_id", "external_keycloak_email_optional", "external_keycloak_enabled", "external_keycloak_secret", "external_keycloak_url", "external_linkedin_oidc_client_id", "external_linkedin_oidc_email_optional", "external_linkedin_oidc_enabled", "external_linkedin_oidc_secret", "external_slack_oidc_client_id", "external_slack_oidc_email_optional", "external_slack_oidc_enabled", "external_slack_oidc_secret", "external_notion_client_id", "external_notion_email_optional", "external_notion_enabled", "external_notion_secret", "external_phone_enabled", "external_slack_client_id", "external_slack_email_optional", "external_slack_enabled", "external_slack_secret", "external_spotify_client_id", "external_spotify_email_optional", "external_spotify_enabled", "external_spotify_secret", "external_twitch_client_id", "external_twitch_email_optional", "external_twitch_enabled", "external_twitch_secret", "external_twitter_client_id", "external_twitter_email_optional", "external_twitter_enabled", "external_twitter_secret", "external_x_client_id", "external_x_email_optional", "external_x_enabled", "external_x_secret", "external_workos_client_id", "external_workos_enabled", "external_workos_secret", "external_workos_url", "external_web3_solana_enabled", "external_web3_ethereum_enabled", "external_zoom_client_id", "external_zoom_email_optional", "external_zoom_enabled", "external_zoom_secret", "hook_custom_access_token_enabled", "hook_custom_access_token_uri", "hook_custom_access_token_secrets", "hook_mfa_verification_attempt_enabled", "hook_mfa_verification_attempt_uri", "hook_mfa_verification_attempt_secrets", "hook_password_verification_attempt_enabled", "hook_password_verification_attempt_uri", "hook_password_verification_attempt_secrets", "hook_send_sms_enabled", "hook_send_sms_uri", "hook_send_sms_secrets", "hook_send_email_enabled", "hook_send_email_uri", "hook_send_email_secrets", "hook_before_user_created_enabled", "hook_before_user_created_uri", "hook_before_user_created_secrets", "hook_after_user_created_enabled", "hook_after_user_created_uri", "hook_after_user_created_secrets", "jwt_exp", "mailer_allow_unverified_email_sign_ins", "mailer_autoconfirm", "mailer_otp_exp", "mailer_otp_length", "mailer_secure_email_change_enabled", "mailer_subjects_confirmation", "mailer_subjects_email_change", "mailer_subjects_invite", "mailer_subjects_magic_link", "mailer_subjects_reauthentication", "mailer_subjects_recovery", "mailer_subjects_password_changed_notification", "mailer_subjects_email_changed_notification", "mailer_subjects_phone_changed_notification", "mailer_subjects_mfa_factor_enrolled_notification", "mailer_subjects_mfa_factor_unenrolled_notification", "mailer_subjects_identity_linked_notification", "mailer_subjects_identity_unlinked_notification", "mailer_templates_confirmation_content", "mailer_templates_email_change_content", "mailer_templates_invite_content", "mailer_templates_magic_link_content", "mailer_templates_reauthentication_content", "mailer_templates_recovery_content", "mailer_templates_password_changed_notification_content", "mailer_templates_email_changed_notification_content", "mailer_templates_phone_changed_notification_content", "mailer_templates_mfa_factor_enrolled_notification_content", "mailer_templates_mfa_factor_unenrolled_notification_content", "mailer_templates_identity_linked_notification_content", "mailer_templates_identity_unlinked_notification_content", "mailer_notifications_password_changed_enabled", "mailer_notifications_email_changed_enabled", "mailer_notifications_phone_changed_enabled", "mailer_notifications_mfa_factor_enrolled_enabled", "mailer_notifications_mfa_factor_unenrolled_enabled", "mailer_notifications_identity_linked_enabled", "mailer_notifications_identity_unlinked_enabled", "mfa_max_enrolled_factors", "mfa_totp_enroll_enabled", "mfa_totp_verify_enabled", "mfa_phone_enroll_enabled", "mfa_phone_verify_enabled", "mfa_web_authn_enroll_enabled", "mfa_web_authn_verify_enabled", "passkey_enabled", "webauthn_rp_display_name", "webauthn_rp_id", "webauthn_rp_origins", "mfa_phone_otp_length", "mfa_phone_template", "mfa_phone_max_frequency", "nimbus_oauth_client_id", "nimbus_oauth_email_optional", "nimbus_oauth_client_secret", "password_hibp_enabled", "password_min_length", "password_required_characters", "rate_limit_anonymous_users", "rate_limit_email_sent", "rate_limit_sms_sent", "rate_limit_token_refresh", "rate_limit_verify", "rate_limit_otp", "rate_limit_web3", "refresh_token_rotation_enabled", "saml_enabled", "saml_external_url", "saml_allow_encrypted_assertions", "security_sb_forwarded_for_enabled", "security_captcha_enabled", "security_captcha_provider", "security_captcha_secret", "security_manual_linking_enabled", "security_refresh_token_reuse_interval", "security_update_password_require_reauthentication", "sessions_inactivity_timeout", "sessions_single_per_user", "sessions_tags", "sessions_timebox", "site_url", "sms_autoconfirm", "sms_max_frequency", "sms_messagebird_access_key", "sms_messagebird_originator", "sms_otp_exp", "sms_otp_length", "sms_provider", "sms_template", "sms_test_otp", "sms_test_otp_valid_until", "sms_textlocal_api_key", "sms_textlocal_sender", "sms_twilio_account_sid", "sms_twilio_auth_token", "sms_twilio_content_sid", "sms_twilio_message_service_sid", "sms_twilio_verify_account_sid", "sms_twilio_verify_auth_token", "sms_twilio_verify_message_service_sid", "sms_vonage_api_key", "sms_vonage_api_secret", "sms_vonage_from", "smtp_admin_email", "smtp_host", "smtp_max_frequency", "smtp_pass", "smtp_port", "smtp_sender_name", "smtp_user", "uri_allow_list", "oauth_server_enabled", "oauth_server_allow_dynamic_registration", "oauth_server_authorization_path", "custom_oauth_enabled", "custom_oauth_max_providers" ] }, "UpdateAuthConfigBody": { "type": "object", "properties": { "site_url": { "type": "string", "pattern": "^[^,]+$", "nullable": true }, "disable_signup": { "type": "boolean", "nullable": true }, "jwt_exp": { "type": "integer", "minimum": 0, "maximum": 604800, "nullable": true }, "smtp_admin_email": { "type": "string", "format": "email", "nullable": true }, "smtp_host": { "type": "string", "nullable": true }, "smtp_port": { "type": "string", "nullable": true }, "smtp_user": { "type": "string", "nullable": true }, "smtp_pass": { "type": "string", "nullable": true }, "smtp_max_frequency": { "type": "integer", "minimum": 0, "maximum": 32767, "nullable": true }, "smtp_sender_name": { "type": "string", "nullable": true }, "mailer_allow_unverified_email_sign_ins": { "type": "boolean", "nullable": true }, "mailer_autoconfirm": { "type": "boolean", "nullable": true }, "mailer_subjects_invite": { "type": "string", "nullable": true }, "mailer_subjects_confirmation": { "type": "string", "nullable": true }, "mailer_subjects_recovery": { "type": "string", "nullable": true }, "mailer_subjects_email_change": { "type": "string", "nullable": true }, "mailer_subjects_magic_link": { "type": "string", "nullable": true }, "mailer_subjects_reauthentication": { "type": "string", "nullable": true }, "mailer_subjects_password_changed_notification": { "type": "string", "nullable": true }, "mailer_subjects_email_changed_notification": { "type": "string", "nullable": true }, "mailer_subjects_phone_changed_notification": { "type": "string", "nullable": true }, "mailer_subjects_mfa_factor_enrolled_notification": { "type": "string", "nullable": true }, "mailer_subjects_mfa_factor_unenrolled_notification": { "type": "string", "nullable": true }, "mailer_subjects_identity_linked_notification": { "type": "string", "nullable": true }, "mailer_subjects_identity_unlinked_notification": { "type": "string", "nullable": true }, "mailer_templates_invite_content": { "type": "string", "nullable": true }, "mailer_templates_confirmation_content": { "type": "string", "nullable": true }, "mailer_templates_recovery_content": { "type": "string", "nullable": true }, "mailer_templates_email_change_content": { "type": "string", "nullable": true }, "mailer_templates_magic_link_content": { "type": "string", "nullable": true }, "mailer_templates_reauthentication_content": { "type": "string", "nullable": true }, "mailer_templates_password_changed_notification_content": { "type": "string", "nullable": true }, "mailer_templates_email_changed_notification_content": { "type": "string", "nullable": true }, "mailer_templates_phone_changed_notification_content": { "type": "string", "nullable": true }, "mailer_templates_mfa_factor_enrolled_notification_content": { "type": "string", "nullable": true }, "mailer_templates_mfa_factor_unenrolled_notification_content": { "type": "string", "nullable": true }, "mailer_templates_identity_linked_notification_content": { "type": "string", "nullable": true }, "mailer_templates_identity_unlinked_notification_content": { "type": "string", "nullable": true }, "mailer_notifications_password_changed_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_email_changed_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_phone_changed_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_mfa_factor_enrolled_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_mfa_factor_unenrolled_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_identity_linked_enabled": { "type": "boolean", "nullable": true }, "mailer_notifications_identity_unlinked_enabled": { "type": "boolean", "nullable": true }, "mfa_max_enrolled_factors": { "type": "integer", "minimum": 0, "maximum": 2147483647, "nullable": true }, "uri_allow_list": { "type": "string", "nullable": true }, "external_anonymous_users_enabled": { "type": "boolean", "nullable": true }, "external_email_enabled": { "type": "boolean", "nullable": true }, "external_phone_enabled": { "type": "boolean", "nullable": true }, "saml_enabled": { "type": "boolean", "nullable": true }, "saml_external_url": { "type": "string", "pattern": "^[^,]+$", "nullable": true }, "security_sb_forwarded_for_enabled": { "type": "boolean", "nullable": true }, "security_captcha_enabled": { "type": "boolean", "nullable": true }, "security_captcha_provider": { "type": "string", "enum": ["turnstile", "hcaptcha"], "nullable": true }, "security_captcha_secret": { "type": "string", "nullable": true }, "sessions_timebox": { "type": "number", "minimum": 0, "nullable": true }, "sessions_inactivity_timeout": { "type": "number", "minimum": 0, "nullable": true }, "sessions_single_per_user": { "type": "boolean", "nullable": true }, "sessions_tags": { "type": "string", "pattern": "^\\s*([a-zA-Z0-9_-]+(\\s*,+\\s*)?)*\\s*$", "nullable": true }, "rate_limit_anonymous_users": { "type": "integer", "minimum": 1, "maximum": 2147483647, "nullable": true }, "rate_limit_email_sent": { "type": "integer", "minimum": 1, "maximum": 2147483647, "nullable": true }, "rate_limit_sms_sent": { "type": "integer", "minimum": 1, "maximum": 2147483647, "nullable": true }, "rate_limit_verify": { "type": "integer", "minimum": 1, "maximum": 2147483647, "nullable": true }, "rate_limit_token_refresh": { "type": "integer", "minimum": 1, "maximum": 2147483647, "nullable": true }, "rate_limit_otp": { "type": "integer", "minimum": 1, "maximum": 2147483647, "nullable": true }, "rate_limit_web3": { "type": "integer", "minimum": 1, "maximum": 2147483647, "nullable": true }, "mailer_secure_email_change_enabled": { "type": "boolean", "nullable": true }, "refresh_token_rotation_enabled": { "type": "boolean", "nullable": true }, "password_hibp_enabled": { "type": "boolean", "nullable": true }, "password_min_length": { "type": "integer", "minimum": 6, "maximum": 32767, "nullable": true }, "password_required_characters": { "type": "string", "enum": [ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789", "abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789", "abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789:!@#$%^&*()_+-=[]{};'\\\\:\"|<>?,./`~", "" ], "nullable": true }, "security_manual_linking_enabled": { "type": "boolean", "nullable": true }, "security_update_password_require_reauthentication": { "type": "boolean", "nullable": true }, "security_refresh_token_reuse_interval": { "type": "integer", "minimum": 0, "maximum": 2147483647, "nullable": true }, "mailer_otp_exp": { "type": "integer", "minimum": 0, "maximum": 2147483647 }, "mailer_otp_length": { "type": "integer", "minimum": 6, "maximum": 10, "nullable": true }, "sms_autoconfirm": { "type": "boolean", "nullable": true }, "sms_max_frequency": { "type": "integer", "minimum": 0, "maximum": 32767, "nullable": true }, "sms_otp_exp": { "type": "integer", "minimum": 0, "maximum": 2147483647, "nullable": true }, "sms_otp_length": { "type": "integer", "minimum": 0, "maximum": 32767 }, "sms_provider": { "type": "string", "enum": ["messagebird", "textlocal", "twilio", "twilio_verify", "vonage"], "nullable": true }, "sms_messagebird_access_key": { "type": "string", "nullable": true }, "sms_messagebird_originator": { "type": "string", "nullable": true }, "sms_test_otp": { "type": "string", "pattern": "^([0-9]{1,15}=[0-9]+,?)*$", "nullable": true }, "sms_test_otp_valid_until": { "type": "string", "format": "date-time", "nullable": true }, "sms_textlocal_api_key": { "type": "string", "nullable": true }, "sms_textlocal_sender": { "type": "string", "nullable": true }, "sms_twilio_account_sid": { "type": "string", "nullable": true }, "sms_twilio_auth_token": { "type": "string", "nullable": true }, "sms_twilio_content_sid": { "type": "string", "nullable": true }, "sms_twilio_message_service_sid": { "type": "string", "nullable": true }, "sms_twilio_verify_account_sid": { "type": "string", "nullable": true }, "sms_twilio_verify_auth_token": { "type": "string", "nullable": true }, "sms_twilio_verify_message_service_sid": { "type": "string", "nullable": true }, "sms_vonage_api_key": { "type": "string", "nullable": true }, "sms_vonage_api_secret": { "type": "string", "nullable": true }, "sms_vonage_from": { "type": "string", "nullable": true }, "sms_template": { "type": "string", "nullable": true }, "hook_mfa_verification_attempt_enabled": { "type": "boolean", "nullable": true }, "hook_mfa_verification_attempt_uri": { "type": "string", "nullable": true }, "hook_mfa_verification_attempt_secrets": { "type": "string", "nullable": true }, "hook_password_verification_attempt_enabled": { "type": "boolean", "nullable": true }, "hook_password_verification_attempt_uri": { "type": "string", "nullable": true }, "hook_password_verification_attempt_secrets": { "type": "string", "nullable": true }, "hook_custom_access_token_enabled": { "type": "boolean", "nullable": true }, "hook_custom_access_token_uri": { "type": "string", "nullable": true }, "hook_custom_access_token_secrets": { "type": "string", "nullable": true }, "hook_send_sms_enabled": { "type": "boolean", "nullable": true }, "hook_send_sms_uri": { "type": "string", "nullable": true }, "hook_send_sms_secrets": { "type": "string", "nullable": true }, "hook_send_email_enabled": { "type": "boolean", "nullable": true }, "hook_send_email_uri": { "type": "string", "nullable": true }, "hook_send_email_secrets": { "type": "string", "nullable": true }, "hook_before_user_created_enabled": { "type": "boolean", "nullable": true }, "hook_before_user_created_uri": { "type": "string", "nullable": true }, "hook_before_user_created_secrets": { "type": "string", "nullable": true }, "hook_after_user_created_enabled": { "type": "boolean", "nullable": true }, "hook_after_user_created_uri": { "type": "string", "nullable": true }, "hook_after_user_created_secrets": { "type": "string", "nullable": true }, "external_apple_enabled": { "type": "boolean", "nullable": true }, "external_apple_client_id": { "type": "string", "nullable": true }, "external_apple_email_optional": { "type": "boolean", "nullable": true }, "external_apple_secret": { "type": "string", "nullable": true }, "external_apple_additional_client_ids": { "type": "string", "nullable": true }, "external_azure_enabled": { "type": "boolean", "nullable": true }, "external_azure_client_id": { "type": "string", "nullable": true }, "external_azure_email_optional": { "type": "boolean", "nullable": true }, "external_azure_secret": { "type": "string", "nullable": true }, "external_azure_url": { "type": "string", "nullable": true }, "external_bitbucket_enabled": { "type": "boolean", "nullable": true }, "external_bitbucket_client_id": { "type": "string", "nullable": true }, "external_bitbucket_email_optional": { "type": "boolean", "nullable": true }, "external_bitbucket_secret": { "type": "string", "nullable": true }, "external_discord_enabled": { "type": "boolean", "nullable": true }, "external_discord_client_id": { "type": "string", "nullable": true }, "external_discord_email_optional": { "type": "boolean", "nullable": true }, "external_discord_secret": { "type": "string", "nullable": true }, "external_facebook_enabled": { "type": "boolean", "nullable": true }, "external_facebook_client_id": { "type": "string", "nullable": true }, "external_facebook_email_optional": { "type": "boolean", "nullable": true }, "external_facebook_secret": { "type": "string", "nullable": true }, "external_figma_enabled": { "type": "boolean", "nullable": true }, "external_figma_client_id": { "type": "string", "nullable": true }, "external_figma_email_optional": { "type": "boolean", "nullable": true }, "external_figma_secret": { "type": "string", "nullable": true }, "external_github_enabled": { "type": "boolean", "nullable": true }, "external_github_client_id": { "type": "string", "nullable": true }, "external_github_email_optional": { "type": "boolean", "nullable": true }, "external_github_secret": { "type": "string", "nullable": true }, "external_gitlab_enabled": { "type": "boolean", "nullable": true }, "external_gitlab_client_id": { "type": "string", "nullable": true }, "external_gitlab_email_optional": { "type": "boolean", "nullable": true }, "external_gitlab_secret": { "type": "string", "nullable": true }, "external_gitlab_url": { "type": "string", "nullable": true }, "external_google_enabled": { "type": "boolean", "nullable": true }, "external_google_client_id": { "type": "string", "nullable": true }, "external_google_email_optional": { "type": "boolean", "nullable": true }, "external_google_secret": { "type": "string", "nullable": true }, "external_google_additional_client_ids": { "type": "string", "nullable": true }, "external_google_skip_nonce_check": { "type": "boolean", "nullable": true }, "external_kakao_enabled": { "type": "boolean", "nullable": true }, "external_kakao_client_id": { "type": "string", "nullable": true }, "external_kakao_email_optional": { "type": "boolean", "nullable": true }, "external_kakao_secret": { "type": "string", "nullable": true }, "external_keycloak_enabled": { "type": "boolean", "nullable": true }, "external_keycloak_client_id": { "type": "string", "nullable": true }, "external_keycloak_email_optional": { "type": "boolean", "nullable": true }, "external_keycloak_secret": { "type": "string", "nullable": true }, "external_keycloak_url": { "type": "string", "nullable": true }, "external_linkedin_oidc_enabled": { "type": "boolean", "nullable": true }, "external_linkedin_oidc_client_id": { "type": "string", "nullable": true }, "external_linkedin_oidc_email_optional": { "type": "boolean", "nullable": true }, "external_linkedin_oidc_secret": { "type": "string", "nullable": true }, "external_slack_oidc_enabled": { "type": "boolean", "nullable": true }, "external_slack_oidc_client_id": { "type": "string", "nullable": true }, "external_slack_oidc_email_optional": { "type": "boolean", "nullable": true }, "external_slack_oidc_secret": { "type": "string", "nullable": true }, "external_notion_enabled": { "type": "boolean", "nullable": true }, "external_notion_client_id": { "type": "string", "nullable": true }, "external_notion_email_optional": { "type": "boolean", "nullable": true }, "external_notion_secret": { "type": "string", "nullable": true }, "external_slack_enabled": { "type": "boolean", "nullable": true }, "external_slack_client_id": { "type": "string", "nullable": true }, "external_slack_email_optional": { "type": "boolean", "nullable": true }, "external_slack_secret": { "type": "string", "nullable": true }, "external_spotify_enabled": { "type": "boolean", "nullable": true }, "external_spotify_client_id": { "type": "string", "nullable": true }, "external_spotify_email_optional": { "type": "boolean", "nullable": true }, "external_spotify_secret": { "type": "string", "nullable": true }, "external_twitch_enabled": { "type": "boolean", "nullable": true }, "external_twitch_client_id": { "type": "string", "nullable": true }, "external_twitch_email_optional": { "type": "boolean", "nullable": true }, "external_twitch_secret": { "type": "string", "nullable": true }, "external_twitter_enabled": { "type": "boolean", "nullable": true }, "external_twitter_client_id": { "type": "string", "nullable": true }, "external_twitter_email_optional": { "type": "boolean", "nullable": true }, "external_twitter_secret": { "type": "string", "nullable": true }, "external_x_enabled": { "type": "boolean", "nullable": true }, "external_x_client_id": { "type": "string", "nullable": true }, "external_x_email_optional": { "type": "boolean", "nullable": true }, "external_x_secret": { "type": "string", "nullable": true }, "external_workos_enabled": { "type": "boolean", "nullable": true }, "external_workos_client_id": { "type": "string", "nullable": true }, "external_workos_secret": { "type": "string", "nullable": true }, "external_workos_url": { "type": "string", "nullable": true }, "external_web3_solana_enabled": { "type": "boolean", "nullable": true }, "external_web3_ethereum_enabled": { "type": "boolean", "nullable": true }, "external_zoom_enabled": { "type": "boolean", "nullable": true }, "external_zoom_client_id": { "type": "string", "nullable": true }, "external_zoom_email_optional": { "type": "boolean", "nullable": true }, "external_zoom_secret": { "type": "string", "nullable": true }, "db_max_pool_size": { "type": "integer", "nullable": true }, "db_max_pool_size_unit": { "type": "string", "enum": ["connections", "percent"], "nullable": true }, "api_max_request_duration": { "type": "integer", "nullable": true }, "mfa_totp_enroll_enabled": { "type": "boolean", "nullable": true }, "mfa_totp_verify_enabled": { "type": "boolean", "nullable": true }, "mfa_web_authn_enroll_enabled": { "type": "boolean", "nullable": true }, "mfa_web_authn_verify_enabled": { "type": "boolean", "nullable": true }, "passkey_enabled": { "type": "boolean" }, "webauthn_rp_display_name": { "type": "string", "nullable": true }, "webauthn_rp_id": { "type": "string", "nullable": true }, "webauthn_rp_origins": { "type": "string", "nullable": true }, "mfa_phone_enroll_enabled": { "type": "boolean", "nullable": true }, "mfa_phone_verify_enabled": { "type": "boolean", "nullable": true }, "mfa_phone_max_frequency": { "type": "integer", "minimum": 0, "maximum": 32767, "nullable": true }, "mfa_phone_otp_length": { "type": "integer", "minimum": 0, "maximum": 32767, "nullable": true }, "mfa_phone_template": { "type": "string", "nullable": true }, "nimbus_oauth_client_id": { "type": "string", "nullable": true }, "nimbus_oauth_client_secret": { "type": "string", "nullable": true }, "oauth_server_enabled": { "type": "boolean", "nullable": true }, "oauth_server_allow_dynamic_registration": { "type": "boolean", "nullable": true }, "oauth_server_authorization_path": { "type": "string", "nullable": true }, "custom_oauth_enabled": { "type": "boolean" } }, "example": { "site_url": "https://app.example.com", "disable_signup": false, "jwt_exp": 3600 } }, "CreateThirdPartyAuthBody": { "type": "object", "properties": { "oidc_issuer_url": { "type": "string" }, "jwks_url": { "type": "string" }, "custom_jwks": {} }, "example": { "oidc_issuer_url": "https://login.acme.com", "jwks_url": "https://login.acme.com/.well-known/jwks.json" } }, "ThirdPartyAuth": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "type": { "type": "string" }, "oidc_issuer_url": { "type": "string", "nullable": true }, "jwks_url": { "type": "string", "nullable": true }, "custom_jwks": { "nullable": true }, "resolved_jwks": { "nullable": true }, "inserted_at": { "type": "string" }, "updated_at": { "type": "string" }, "resolved_at": { "type": "string", "nullable": true } }, "required": ["id", "type", "inserted_at", "updated_at"] }, "GetProjectAvailableRestoreVersionsResponse": { "type": "object", "properties": { "available_versions": { "type": "array", "items": { "type": "object", "properties": { "version": { "type": "string" }, "release_channel": { "type": "string", "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] }, "postgres_engine": { "type": "string", "enum": ["13", "14", "15", "17", "17-oriole"] } }, "required": ["version", "release_channel", "postgres_engine"] } } }, "required": ["available_versions"] }, "ListProjectAddonsResponse": { "type": "object", "properties": { "selected_addons": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "custom_domain", "compute_instance", "pitr", "ipv4", "auth_mfa_phone", "auth_mfa_web_authn", "log_drain" ] }, "variant": { "type": "object", "properties": { "id": { "oneOf": [ { "type": "string", "enum": [ "ci_micro", "ci_small", "ci_medium", "ci_large", "ci_xlarge", "ci_2xlarge", "ci_4xlarge", "ci_8xlarge", "ci_12xlarge", "ci_16xlarge", "ci_24xlarge", "ci_24xlarge_optimized_cpu", "ci_24xlarge_optimized_memory", "ci_24xlarge_high_memory", "ci_48xlarge", "ci_48xlarge_optimized_cpu", "ci_48xlarge_optimized_memory", "ci_48xlarge_high_memory" ] }, { "type": "string", "enum": ["cd_default"] }, { "type": "string", "enum": ["pitr_7", "pitr_14", "pitr_28"] }, { "type": "string", "enum": ["ipv4_default"] }, { "type": "string", "enum": ["auth_mfa_phone_default"] }, { "type": "string", "enum": ["auth_mfa_web_authn_default"] }, { "type": "string", "enum": ["log_drain_default"] } ] }, "name": { "type": "string" }, "price": { "type": "object", "properties": { "description": { "type": "string" }, "type": { "type": "string", "enum": ["fixed", "usage"] }, "interval": { "type": "string", "enum": ["monthly", "hourly"] }, "amount": { "type": "number" } }, "required": ["description", "type", "interval", "amount"] }, "meta": { "description": "Any JSON-serializable value" } }, "required": ["id", "name", "price"] } }, "required": ["type", "variant"] } }, "available_addons": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "custom_domain", "compute_instance", "pitr", "ipv4", "auth_mfa_phone", "auth_mfa_web_authn", "log_drain" ] }, "name": { "type": "string" }, "variants": { "type": "array", "items": { "type": "object", "properties": { "id": { "oneOf": [ { "type": "string", "enum": [ "ci_micro", "ci_small", "ci_medium", "ci_large", "ci_xlarge", "ci_2xlarge", "ci_4xlarge", "ci_8xlarge", "ci_12xlarge", "ci_16xlarge", "ci_24xlarge", "ci_24xlarge_optimized_cpu", "ci_24xlarge_optimized_memory", "ci_24xlarge_high_memory", "ci_48xlarge", "ci_48xlarge_optimized_cpu", "ci_48xlarge_optimized_memory", "ci_48xlarge_high_memory" ] }, { "type": "string", "enum": ["cd_default"] }, { "type": "string", "enum": ["pitr_7", "pitr_14", "pitr_28"] }, { "type": "string", "enum": ["ipv4_default"] }, { "type": "string", "enum": ["auth_mfa_phone_default"] }, { "type": "string", "enum": ["auth_mfa_web_authn_default"] }, { "type": "string", "enum": ["log_drain_default"] } ] }, "name": { "type": "string" }, "price": { "type": "object", "properties": { "description": { "type": "string" }, "type": { "type": "string", "enum": ["fixed", "usage"] }, "interval": { "type": "string", "enum": ["monthly", "hourly"] }, "amount": { "type": "number" } }, "required": ["description", "type", "interval", "amount"] }, "meta": { "description": "Any JSON-serializable value" } }, "required": ["id", "name", "price"] } } }, "required": ["type", "name", "variants"] } } }, "required": ["selected_addons", "available_addons"] }, "ApplyProjectAddonBody": { "type": "object", "properties": { "addon_variant": { "oneOf": [ { "type": "string", "enum": [ "ci_micro", "ci_small", "ci_medium", "ci_large", "ci_xlarge", "ci_2xlarge", "ci_4xlarge", "ci_8xlarge", "ci_12xlarge", "ci_16xlarge", "ci_24xlarge", "ci_24xlarge_optimized_cpu", "ci_24xlarge_optimized_memory", "ci_24xlarge_high_memory", "ci_48xlarge", "ci_48xlarge_optimized_cpu", "ci_48xlarge_optimized_memory", "ci_48xlarge_high_memory" ] }, { "type": "string", "enum": ["cd_default"] }, { "type": "string", "enum": ["pitr_7", "pitr_14", "pitr_28"] }, { "type": "string", "enum": ["ipv4_default"] } ] }, "addon_type": { "type": "string", "enum": [ "custom_domain", "compute_instance", "pitr", "ipv4", "auth_mfa_phone", "auth_mfa_web_authn", "log_drain" ] } }, "required": ["addon_variant", "addon_type"], "example": { "addon_variant": "pitr_7", "addon_type": "pitr" } }, "ProjectClaimTokenResponse": { "type": "object", "properties": { "token_alias": { "type": "string" }, "expires_at": { "type": "string" }, "created_at": { "type": "string" }, "created_by": { "type": "string", "format": "uuid" } }, "required": ["token_alias", "expires_at", "created_at", "created_by"] }, "CreateProjectClaimTokenResponse": { "type": "object", "properties": { "token": { "type": "string" }, "token_alias": { "type": "string" }, "expires_at": { "type": "string" }, "created_at": { "type": "string" }, "created_by": { "type": "string", "format": "uuid" } }, "required": ["token", "token_alias", "expires_at", "created_at", "created_by"] }, "V1ProjectAdvisorsResponse": { "type": "object", "properties": { "lints": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "enum": [ "unindexed_foreign_keys", "auth_users_exposed", "auth_rls_initplan", "no_primary_key", "unused_index", "multiple_permissive_policies", "policy_exists_rls_disabled", "rls_enabled_no_policy", "duplicate_index", "security_definer_view", "function_search_path_mutable", "rls_disabled_in_public", "extension_in_public", "rls_references_user_metadata", "materialized_view_in_api", "foreign_table_in_api", "unsupported_reg_types", "auth_otp_long_expiry", "auth_otp_short_length", "ssl_not_enforced", "network_restrictions_not_set", "password_requirements_min_length", "pitr_not_enabled", "auth_leaked_password_protection", "auth_insufficient_mfa_options", "auth_password_policy_missing", "leaked_service_key", "no_backup_admin", "vulnerable_postgres_version" ] }, "title": { "type": "string" }, "level": { "type": "string", "enum": ["ERROR", "WARN", "INFO"] }, "facing": { "type": "string", "enum": ["EXTERNAL"] }, "categories": { "type": "array", "items": { "type": "string", "enum": ["PERFORMANCE", "SECURITY"] } }, "description": { "type": "string" }, "detail": { "type": "string" }, "remediation": { "type": "string" }, "metadata": { "type": "object", "properties": { "schema": { "type": "string" }, "name": { "type": "string" }, "entity": { "type": "string" }, "type": { "type": "string", "enum": ["table", "view", "auth", "function", "extension", "compliance"] }, "fkey_name": { "type": "string" }, "fkey_columns": { "type": "array", "items": { "type": "number" } } } }, "cache_key": { "type": "string" } }, "required": [ "name", "title", "level", "facing", "categories", "description", "detail", "remediation", "cache_key" ] } } }, "required": ["lints"] }, "AnalyticsResponse": { "type": "object", "properties": { "result": { "type": "array", "items": {} }, "error": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "code": { "type": "number" }, "errors": { "type": "array", "items": { "type": "object", "properties": { "domain": { "type": "string" }, "location": { "type": "string" }, "locationType": { "type": "string" }, "message": { "type": "string" }, "reason": { "type": "string" } }, "required": ["domain", "location", "locationType", "message", "reason"] } }, "message": { "type": "string" }, "status": { "type": "string" } }, "required": ["code", "errors", "message", "status"] } ] } } }, "V1GetUsageApiCountResponse": { "type": "object", "properties": { "result": { "type": "array", "items": { "type": "object", "properties": { "timestamp": { "type": "string", "format": "date-time" }, "total_auth_requests": { "type": "number" }, "total_realtime_requests": { "type": "number" }, "total_rest_requests": { "type": "number" }, "total_storage_requests": { "type": "number" } }, "required": [ "timestamp", "total_auth_requests", "total_realtime_requests", "total_rest_requests", "total_storage_requests" ] } }, "error": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "code": { "type": "number" }, "errors": { "type": "array", "items": { "type": "object", "properties": { "domain": { "type": "string" }, "location": { "type": "string" }, "locationType": { "type": "string" }, "message": { "type": "string" }, "reason": { "type": "string" } }, "required": ["domain", "location", "locationType", "message", "reason"] } }, "message": { "type": "string" }, "status": { "type": "string" } }, "required": ["code", "errors", "message", "status"] } ] } } }, "V1GetUsageApiRequestsCountResponse": { "type": "object", "properties": { "result": { "type": "array", "items": { "type": "object", "properties": { "count": { "type": "number" } }, "required": ["count"] } }, "error": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "code": { "type": "number" }, "errors": { "type": "array", "items": { "type": "object", "properties": { "domain": { "type": "string" }, "location": { "type": "string" }, "locationType": { "type": "string" }, "message": { "type": "string" }, "reason": { "type": "string" } }, "required": ["domain", "location", "locationType", "message", "reason"] } }, "message": { "type": "string" }, "status": { "type": "string" } }, "required": ["code", "errors", "message", "status"] } ] } } }, "CreateRoleBody": { "type": "object", "properties": { "read_only": { "type": "boolean" } }, "required": ["read_only"], "example": { "read_only": true } }, "CreateRoleResponse": { "type": "object", "properties": { "role": { "type": "string", "minLength": 1 }, "password": { "type": "string", "minLength": 1 }, "ttl_seconds": { "type": "integer", "minimum": 1, "format": "int64" } }, "required": ["role", "password", "ttl_seconds"] }, "DeleteRolesResponse": { "type": "object", "properties": { "message": { "type": "string", "enum": ["ok"] } }, "required": ["message"] }, "V1ListMigrationsResponse": { "type": "array", "items": { "type": "object", "properties": { "version": { "type": "string", "minLength": 1 }, "name": { "type": "string" } }, "required": ["version"] } }, "V1CreateMigrationBody": { "type": "object", "properties": { "query": { "type": "string", "minLength": 1 }, "name": { "type": "string" }, "rollback": { "type": "string" } }, "required": ["query"], "example": { "query": "create table public.widgets(id bigint primary key);", "name": "create_widgets_table", "rollback": "drop table if exists public.widgets;" } }, "V1UpsertMigrationBody": { "type": "object", "properties": { "query": { "type": "string", "minLength": 1 }, "name": { "type": "string" }, "rollback": { "type": "string" } }, "required": ["query"], "example": { "query": "create table public.widgets(id bigint primary key);", "name": "create_widgets_table", "rollback": "drop table if exists public.widgets;" } }, "V1GetMigrationResponse": { "type": "object", "properties": { "version": { "type": "string", "minLength": 1 }, "name": { "type": "string" }, "statements": { "type": "array", "items": { "type": "string" } }, "rollback": { "type": "array", "items": { "type": "string" } }, "created_by": { "type": "string" }, "idempotency_key": { "type": "string" } }, "required": ["version"] }, "V1PatchMigrationBody": { "type": "object", "properties": { "name": { "type": "string" }, "rollback": { "type": "string" } }, "example": { "name": "create_widgets_table", "rollback": "drop table if exists public.widgets;" } }, "V1RunQueryBody": { "type": "object", "properties": { "query": { "type": "string", "minLength": 1 }, "parameters": { "type": "array", "items": {} }, "read_only": { "type": "boolean" } }, "required": ["query"], "example": { "query": "select * from pg_stat_activity limit 1;", "read_only": true } }, "V1ReadOnlyQueryBody": { "type": "object", "properties": { "query": { "type": "string", "minLength": 1 }, "parameters": { "type": "array", "items": {} } }, "required": ["query"], "example": { "query": "select * from pg_stat_activity limit 1;" } }, "GetProjectDbMetadataResponse": { "type": "object", "properties": { "databases": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "schemas": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"], "additionalProperties": true } } }, "required": ["name", "schemas"], "additionalProperties": true } } }, "required": ["databases"] }, "V1UpdatePasswordBody": { "type": "object", "properties": { "password": { "type": "string", "minLength": 4 } }, "required": ["password"], "example": { "password": "correct-horse-battery-staple" } }, "V1UpdatePasswordResponse": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] }, "AuthorizeJitAccessBody": { "type": "object", "properties": { "role": { "type": "string", "minLength": 1 }, "rhost": { "type": "string", "minLength": 1 } }, "required": ["role", "rhost"], "example": { "role": "postgres", "rhost": "203.0.113.10" } }, "JitAuthorizeAccessResponse": { "type": "object", "properties": { "user_id": { "type": "string", "format": "uuid" }, "user_role": { "type": "object", "properties": { "role": { "type": "string", "minLength": 1 }, "expires_at": { "type": "number" }, "allowed_networks": { "type": "object", "properties": { "allowed_cidrs": { "type": "array", "items": { "type": "object", "properties": { "cidr": { "type": "string" } }, "required": ["cidr"] } }, "allowed_cidrs_v6": { "type": "array", "items": { "type": "object", "properties": { "cidr": { "type": "string" } }, "required": ["cidr"] } } } } }, "required": ["role"] } }, "required": ["user_id", "user_role"] }, "JitListAccessResponse": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "user_id": { "type": "string", "format": "uuid" }, "user_roles": { "type": "array", "items": { "type": "object", "properties": { "role": { "type": "string", "minLength": 1 }, "expires_at": { "type": "number" }, "allowed_networks": { "type": "object", "properties": { "allowed_cidrs": { "type": "array", "items": { "type": "object", "properties": { "cidr": { "type": "string" } }, "required": ["cidr"] } }, "allowed_cidrs_v6": { "type": "array", "items": { "type": "object", "properties": { "cidr": { "type": "string" } }, "required": ["cidr"] } } } } }, "required": ["role"] } } }, "required": ["user_id", "user_roles"] } } }, "required": ["items"] }, "UpdateJitAccessBody": { "type": "object", "properties": { "user_id": { "type": "string", "format": "uuid", "minLength": 1 }, "roles": { "type": "array", "items": { "type": "object", "properties": { "role": { "type": "string", "minLength": 1 }, "expires_at": { "type": "number" }, "allowed_networks": { "type": "object", "properties": { "allowed_cidrs": { "type": "array", "items": { "type": "object", "properties": { "cidr": { "type": "string" } }, "required": ["cidr"] } }, "allowed_cidrs_v6": { "type": "array", "items": { "type": "object", "properties": { "cidr": { "type": "string" } }, "required": ["cidr"] } } } } }, "required": ["role"] } } }, "required": ["user_id", "roles"], "example": { "user_id": "55555555-5555-4555-8555-555555555555", "roles": [ { "role": "postgres", "expires_at": 1740787200, "allowed_networks": { "allowed_cidrs": [{ "cidr": "203.0.113.0/24" }] } } ] } }, "FunctionResponse": { "type": "object", "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "status": { "type": "string", "enum": ["ACTIVE", "REMOVED", "THROTTLED"] }, "version": { "type": "integer" }, "created_at": { "type": "integer", "format": "int64" }, "updated_at": { "type": "integer", "format": "int64" }, "verify_jwt": { "type": "boolean" }, "import_map": { "type": "boolean" }, "entrypoint_path": { "type": "string" }, "import_map_path": { "type": "string" }, "ezbr_sha256": { "type": "string" } }, "required": ["id", "slug", "name", "status", "version", "created_at", "updated_at"] }, "V1CreateFunctionBody": { "type": "object", "properties": { "slug": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_-]*$" }, "name": { "type": "string" }, "body": { "type": "string" }, "verify_jwt": { "type": "boolean" } }, "required": ["slug", "name", "body"], "example": { "slug": "hello-world", "name": "Hello World", "body": "Deno.serve(() => new Response('Hello, world!'))", "verify_jwt": true } }, "BulkUpdateFunctionBody": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "slug": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_-]*$" }, "name": { "type": "string" }, "status": { "type": "string", "enum": ["ACTIVE", "REMOVED", "THROTTLED"] }, "version": { "type": "integer" }, "created_at": { "type": "integer", "format": "int64" }, "verify_jwt": { "type": "boolean" }, "import_map": { "type": "boolean" }, "entrypoint_path": { "type": "string" }, "import_map_path": { "type": "string" }, "ezbr_sha256": { "type": "string" } }, "required": ["id", "slug", "name", "status", "version"] }, "example": [ { "id": "3c078cce-ad70-4148-9f37-4da362789053", "slug": "hello-world", "name": "Hello World", "status": "ACTIVE", "version": 2, "verify_jwt": true, "entrypoint_path": "index.ts" } ] }, "BulkUpdateFunctionResponse": { "type": "object", "properties": { "functions": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "status": { "type": "string", "enum": ["ACTIVE", "REMOVED", "THROTTLED"] }, "version": { "type": "integer" }, "created_at": { "type": "integer", "format": "int64" }, "updated_at": { "type": "integer", "format": "int64" }, "verify_jwt": { "type": "boolean" }, "import_map": { "type": "boolean" }, "entrypoint_path": { "type": "string" }, "import_map_path": { "type": "string" }, "ezbr_sha256": { "type": "string" } }, "required": ["id", "slug", "name", "status", "version", "created_at", "updated_at"] } } }, "required": ["functions"] }, "FunctionDeployBody": { "type": "object", "properties": { "file": { "type": "array", "items": { "type": "string", "format": "binary" } }, "metadata": { "type": "object", "properties": { "entrypoint_path": { "type": "string" }, "import_map_path": { "type": "string" }, "static_patterns": { "type": "array", "items": { "type": "string" } }, "verify_jwt": { "type": "boolean" }, "name": { "type": "string" } }, "required": ["entrypoint_path"] } }, "required": ["metadata"], "example": { "file": ["./supabase/functions/hello-world/index.ts"], "metadata": { "entrypoint_path": "index.ts", "verify_jwt": true, "name": "Hello World" } } }, "DeployFunctionResponse": { "type": "object", "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "status": { "type": "string", "enum": ["ACTIVE", "REMOVED", "THROTTLED"] }, "version": { "type": "integer" }, "created_at": { "type": "integer", "format": "int64" }, "updated_at": { "type": "integer", "format": "int64" }, "verify_jwt": { "type": "boolean" }, "import_map": { "type": "boolean" }, "entrypoint_path": { "type": "string" }, "import_map_path": { "type": "string" }, "ezbr_sha256": { "type": "string" } }, "required": ["id", "slug", "name", "status", "version"] }, "FunctionSlugResponse": { "type": "object", "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "status": { "type": "string", "enum": ["ACTIVE", "REMOVED", "THROTTLED"] }, "version": { "type": "integer" }, "created_at": { "type": "integer", "format": "int64" }, "updated_at": { "type": "integer", "format": "int64" }, "verify_jwt": { "type": "boolean" }, "import_map": { "type": "boolean" }, "entrypoint_path": { "type": "string" }, "import_map_path": { "type": "string" }, "ezbr_sha256": { "type": "string" } }, "required": ["id", "slug", "name", "status", "version", "created_at", "updated_at"] }, "StreamableFile": { "type": "object", "properties": {} }, "V1UpdateFunctionBody": { "type": "object", "properties": { "name": { "type": "string" }, "body": { "type": "string" }, "verify_jwt": { "type": "boolean" } }, "example": { "name": "Hello World", "body": "Deno.serve(() => new Response('Hello again!'))", "verify_jwt": true } }, "V1StorageBucketResponse": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" }, "public": { "type": "boolean" } }, "required": ["id", "name", "owner", "created_at", "updated_at", "public"] }, "DiskResponse": { "type": "object", "properties": { "attributes": { "oneOf": [ { "type": "object", "properties": { "iops": { "type": "integer", "minimum": 0, "exclusiveMinimum": true }, "size_gb": { "type": "integer", "minimum": 0, "exclusiveMinimum": true }, "throughput_mibps": { "type": "integer", "minimum": 0, "exclusiveMinimum": true }, "type": { "type": "string", "enum": ["gp3"] } }, "required": ["iops", "size_gb", "type"] }, { "type": "object", "properties": { "iops": { "type": "integer", "minimum": 0, "exclusiveMinimum": true }, "size_gb": { "type": "integer", "minimum": 0, "exclusiveMinimum": true }, "type": { "type": "string", "enum": ["io2"] } }, "required": ["iops", "size_gb", "type"] } ] }, "last_modified_at": { "type": "string" } }, "required": ["attributes"] }, "DiskRequestBody": { "type": "object", "properties": { "attributes": { "discriminator": { "propertyName": "type" }, "oneOf": [ { "type": "object", "properties": { "iops": { "type": "integer", "minimum": 0, "exclusiveMinimum": true }, "size_gb": { "type": "integer", "minimum": 0, "exclusiveMinimum": true }, "throughput_mibps": { "type": "integer", "minimum": 0, "exclusiveMinimum": true }, "type": { "type": "string", "enum": ["gp3"] } }, "required": ["iops", "size_gb", "type"] }, { "type": "object", "properties": { "iops": { "type": "integer", "minimum": 0, "exclusiveMinimum": true }, "size_gb": { "type": "integer", "minimum": 0, "exclusiveMinimum": true }, "type": { "type": "string", "enum": ["io2"] } }, "required": ["iops", "size_gb", "type"] } ] } }, "required": ["attributes"], "example": { "attributes": { "type": "gp3", "size_gb": 100, "iops": 3000, "throughput_mibps": 125 } } }, "DiskUtilMetricsResponse": { "type": "object", "properties": { "timestamp": { "type": "string" }, "metrics": { "type": "object", "properties": { "fs_size_bytes": { "type": "number" }, "fs_avail_bytes": { "type": "number" }, "fs_used_bytes": { "type": "number" } }, "required": ["fs_size_bytes", "fs_avail_bytes", "fs_used_bytes"] } }, "required": ["timestamp", "metrics"] }, "DiskAutoscaleConfig": { "type": "object", "properties": { "growth_percent": { "type": "integer", "minimum": 0, "exclusiveMinimum": true, "nullable": true, "description": "Growth percentage for disk autoscaling" }, "min_increment_gb": { "type": "integer", "minimum": 0, "exclusiveMinimum": true, "nullable": true, "description": "Minimum increment size for disk autoscaling in GB" }, "max_size_gb": { "type": "integer", "minimum": 0, "exclusiveMinimum": true, "nullable": true, "description": "Maximum limit the disk size will grow to in GB" } }, "required": ["growth_percent", "min_increment_gb", "max_size_gb"] }, "StorageConfigResponse": { "type": "object", "properties": { "fileSizeLimit": { "type": "integer", "format": "int64" }, "features": { "type": "object", "properties": { "imageTransformation": { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": ["enabled"] }, "s3Protocol": { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": ["enabled"] }, "icebergCatalog": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "maxNamespaces": { "type": "integer", "minimum": 0 }, "maxTables": { "type": "integer", "minimum": 0 }, "maxCatalogs": { "type": "integer", "minimum": 0 } }, "required": ["enabled", "maxNamespaces", "maxTables", "maxCatalogs"] }, "vectorBuckets": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "maxBuckets": { "type": "integer", "minimum": 0 }, "maxIndexes": { "type": "integer", "minimum": 0 } }, "required": ["enabled", "maxBuckets", "maxIndexes"] } }, "required": ["imageTransformation", "s3Protocol", "icebergCatalog", "vectorBuckets"] }, "capabilities": { "type": "object", "properties": { "list_v2": { "type": "boolean" }, "iceberg_catalog": { "type": "boolean" } }, "required": ["list_v2", "iceberg_catalog"] }, "external": { "type": "object", "properties": { "upstreamTarget": { "type": "string", "enum": ["main", "canary"] } }, "required": ["upstreamTarget"] }, "migrationVersion": { "type": "string" }, "databasePoolMode": { "type": "string" } }, "required": [ "fileSizeLimit", "features", "capabilities", "external", "migrationVersion", "databasePoolMode" ] }, "UpdateStorageConfigBody": { "type": "object", "properties": { "fileSizeLimit": { "type": "integer", "minimum": 0, "maximum": 536870912000, "format": "int64" }, "features": { "type": "object", "properties": { "imageTransformation": { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": ["enabled"] }, "s3Protocol": { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": ["enabled"] }, "icebergCatalog": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "maxNamespaces": { "type": "integer", "minimum": 0 }, "maxTables": { "type": "integer", "minimum": 0 }, "maxCatalogs": { "type": "integer", "minimum": 0 } }, "required": ["enabled", "maxNamespaces", "maxTables", "maxCatalogs"] }, "vectorBuckets": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "maxBuckets": { "type": "integer", "minimum": 0 }, "maxIndexes": { "type": "integer", "minimum": 0 } }, "required": ["enabled", "maxBuckets", "maxIndexes"] } } }, "external": { "type": "object", "properties": { "upstreamTarget": { "type": "string", "enum": ["main", "canary"] } }, "required": ["upstreamTarget"] } }, "additionalProperties": false, "example": { "fileSizeLimit": 10485760, "features": { "imageTransformation": { "enabled": true } } } }, "V1PgbouncerConfigResponse": { "type": "object", "properties": { "default_pool_size": { "type": "integer" }, "ignore_startup_parameters": { "type": "string" }, "max_client_conn": { "type": "integer" }, "pool_mode": { "type": "string", "enum": ["transaction", "session", "statement"] }, "connection_string": { "type": "string" }, "server_idle_timeout": { "type": "integer" }, "server_lifetime": { "type": "integer" }, "query_wait_timeout": { "type": "integer" }, "reserve_pool_size": { "type": "integer" } } }, "SupavisorConfigResponse": { "type": "object", "properties": { "identifier": { "type": "string" }, "database_type": { "type": "string", "enum": ["PRIMARY", "READ_REPLICA"] }, "is_using_scram_auth": { "type": "boolean" }, "db_user": { "type": "string" }, "db_host": { "type": "string" }, "db_port": { "type": "integer" }, "db_name": { "type": "string" }, "connection_string": { "type": "string" }, "connectionString": { "type": "string", "description": "Use connection_string instead" }, "default_pool_size": { "type": "integer", "nullable": true }, "max_client_conn": { "type": "integer", "nullable": true }, "pool_mode": { "type": "string", "enum": ["transaction", "session"] } }, "required": [ "identifier", "database_type", "is_using_scram_auth", "db_user", "db_host", "db_port", "db_name", "connection_string", "connectionString", "default_pool_size", "max_client_conn", "pool_mode" ] }, "UpdateSupavisorConfigBody": { "type": "object", "properties": { "default_pool_size": { "type": "integer", "minimum": 0, "maximum": 3000, "nullable": true }, "pool_mode": { "type": "string", "enum": ["transaction", "session"], "description": "Dedicated pooler mode for the project" } }, "example": { "default_pool_size": 25, "pool_mode": "transaction" } }, "UpdateSupavisorConfigResponse": { "type": "object", "properties": { "default_pool_size": { "type": "integer", "nullable": true }, "pool_mode": { "type": "string" } }, "required": ["default_pool_size", "pool_mode"] }, "PostgresConfigResponse": { "type": "object", "properties": { "effective_cache_size": { "type": "string" }, "logical_decoding_work_mem": { "type": "string" }, "maintenance_work_mem": { "type": "string" }, "track_activity_query_size": { "type": "string" }, "max_connections": { "type": "integer", "minimum": 1, "maximum": 262143 }, "max_locks_per_transaction": { "type": "integer", "minimum": 10, "maximum": 2147483640 }, "max_parallel_maintenance_workers": { "type": "integer", "minimum": 0, "maximum": 1024 }, "max_parallel_workers": { "type": "integer", "minimum": 0, "maximum": 1024 }, "max_parallel_workers_per_gather": { "type": "integer", "minimum": 0, "maximum": 1024 }, "max_replication_slots": { "type": "integer" }, "max_slot_wal_keep_size": { "type": "string" }, "max_standby_archive_delay": { "type": "string" }, "max_standby_streaming_delay": { "type": "string" }, "max_wal_size": { "type": "string" }, "max_wal_senders": { "type": "integer" }, "max_worker_processes": { "type": "integer", "minimum": 0, "maximum": 262143 }, "session_replication_role": { "type": "string", "enum": ["origin", "replica", "local"] }, "shared_buffers": { "type": "string" }, "statement_timeout": { "type": "string", "description": "Default unit: ms", "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" }, "track_commit_timestamp": { "type": "boolean" }, "wal_keep_size": { "type": "string" }, "wal_sender_timeout": { "type": "string", "description": "Default unit: ms", "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" }, "work_mem": { "type": "string" }, "checkpoint_timeout": { "type": "string", "description": "Default unit: s", "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" }, "hot_standby_feedback": { "type": "boolean" } } }, "UpdatePostgresConfigBody": { "type": "object", "properties": { "effective_cache_size": { "type": "string" }, "logical_decoding_work_mem": { "type": "string" }, "maintenance_work_mem": { "type": "string" }, "track_activity_query_size": { "type": "string" }, "max_connections": { "type": "integer", "minimum": 1, "maximum": 262143 }, "max_locks_per_transaction": { "type": "integer", "minimum": 10, "maximum": 2147483640 }, "max_parallel_maintenance_workers": { "type": "integer", "minimum": 0, "maximum": 1024 }, "max_parallel_workers": { "type": "integer", "minimum": 0, "maximum": 1024 }, "max_parallel_workers_per_gather": { "type": "integer", "minimum": 0, "maximum": 1024 }, "max_replication_slots": { "type": "integer" }, "max_slot_wal_keep_size": { "type": "string" }, "max_standby_archive_delay": { "type": "string" }, "max_standby_streaming_delay": { "type": "string" }, "max_wal_size": { "type": "string" }, "max_wal_senders": { "type": "integer" }, "max_worker_processes": { "type": "integer", "minimum": 0, "maximum": 262143 }, "session_replication_role": { "type": "string", "enum": ["origin", "replica", "local"] }, "shared_buffers": { "type": "string" }, "statement_timeout": { "type": "string", "description": "Default unit: ms", "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" }, "track_commit_timestamp": { "type": "boolean" }, "wal_keep_size": { "type": "string" }, "wal_sender_timeout": { "type": "string", "description": "Default unit: ms", "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" }, "work_mem": { "type": "string" }, "checkpoint_timeout": { "type": "string", "description": "Default unit: s", "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" }, "hot_standby_feedback": { "type": "boolean" }, "restart_database": { "type": "boolean" } }, "additionalProperties": false, "example": { "max_connections": 120, "shared_buffers": "256MB", "work_mem": "4MB", "statement_timeout": "60000ms" } }, "RealtimeConfigResponse": { "type": "object", "properties": { "private_only": { "type": "boolean", "nullable": true, "description": "Whether to only allow private channels" }, "connection_pool": { "type": "integer", "minimum": 1, "maximum": 100, "nullable": true, "description": "Sets connection pool size for Realtime Authorization" }, "max_concurrent_users": { "type": "integer", "minimum": 1, "maximum": 50000, "nullable": true, "description": "Sets maximum number of concurrent users rate limit" }, "max_events_per_second": { "type": "integer", "minimum": 1, "maximum": 50000, "nullable": true, "description": "Sets maximum number of events per second rate per channel limit" }, "max_bytes_per_second": { "type": "integer", "minimum": 1, "maximum": 10000000, "nullable": true, "description": "Sets maximum number of bytes per second rate per channel limit" }, "max_channels_per_client": { "type": "integer", "minimum": 1, "maximum": 10000, "nullable": true, "description": "Sets maximum number of channels per client rate limit" }, "max_joins_per_second": { "type": "integer", "minimum": 1, "maximum": 5000, "nullable": true, "description": "Sets maximum number of joins per second rate limit" }, "max_presence_events_per_second": { "type": "integer", "minimum": 1, "maximum": 5000, "nullable": true, "description": "Sets maximum number of presence events per second rate limit" }, "max_payload_size_in_kb": { "type": "integer", "minimum": 1, "maximum": 10000, "nullable": true, "description": "Sets maximum number of payload size in KB rate limit" }, "suspend": { "type": "boolean", "nullable": true, "description": "Disables the Realtime service for this project when true. Set to false to re-enable it." }, "presence_enabled": { "type": "boolean", "description": "Whether to enable presence" } }, "required": [ "private_only", "connection_pool", "max_concurrent_users", "max_events_per_second", "max_bytes_per_second", "max_channels_per_client", "max_joins_per_second", "max_presence_events_per_second", "max_payload_size_in_kb", "suspend", "presence_enabled" ] }, "UpdateRealtimeConfigBody": { "type": "object", "properties": { "private_only": { "type": "boolean", "description": "Whether to only allow private channels" }, "connection_pool": { "type": "integer", "minimum": 1, "maximum": 100, "description": "Sets connection pool size for Realtime Authorization" }, "max_concurrent_users": { "type": "integer", "minimum": 1, "maximum": 50000, "description": "Sets maximum number of concurrent users rate limit" }, "max_events_per_second": { "type": "integer", "minimum": 1, "maximum": 50000, "description": "Sets maximum number of events per second rate per channel limit" }, "max_bytes_per_second": { "type": "integer", "minimum": 1, "maximum": 10000000, "description": "Sets maximum number of bytes per second rate per channel limit" }, "max_channels_per_client": { "type": "integer", "minimum": 1, "maximum": 10000, "description": "Sets maximum number of channels per client rate limit" }, "max_joins_per_second": { "type": "integer", "minimum": 1, "maximum": 5000, "description": "Sets maximum number of joins per second rate limit" }, "max_presence_events_per_second": { "type": "integer", "minimum": 1, "maximum": 5000, "description": "Sets maximum number of presence events per second rate limit" }, "max_payload_size_in_kb": { "type": "integer", "minimum": 1, "maximum": 10000, "description": "Sets maximum number of payload size in KB rate limit" }, "suspend": { "type": "boolean", "description": "Disables the Realtime service for this project when true. Set to false to re-enable it." }, "presence_enabled": { "type": "boolean", "description": "Whether to enable presence" } }, "additionalProperties": false, "example": { "private_only": false, "max_concurrent_users": 1000, "max_channels_per_client": 100 } }, "CreateProviderBody": { "type": "object", "properties": { "type": { "type": "string", "enum": ["saml"], "description": "What type of provider will be created" }, "metadata_xml": { "type": "string" }, "metadata_url": { "type": "string" }, "domains": { "type": "array", "items": { "type": "string" } }, "attribute_mapping": { "type": "object", "properties": { "keys": { "type": "object", "additionalProperties": { "type": "object", "properties": { "name": { "type": "string" }, "names": { "type": "array", "items": { "type": "string" } }, "default": { "oneOf": [ { "type": "object", "properties": {} }, { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] }, "array": { "type": "boolean" } } } } }, "required": ["keys"] }, "name_id_format": { "type": "string", "enum": [ "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" ] } }, "required": ["type"], "example": { "type": "saml", "metadata_url": "https://sso.acme.com/metadata.xml", "domains": ["acme.com"], "attribute_mapping": { "keys": { "email": { "name": "email" }, "first_name": { "name": "first_name" }, "last_name": { "name": "last_name" } } } } }, "CreateProviderResponse": { "type": "object", "properties": { "id": { "type": "string" }, "saml": { "type": "object", "properties": { "id": { "type": "string" }, "entity_id": { "type": "string" }, "metadata_url": { "type": "string" }, "metadata_xml": { "type": "string" }, "attribute_mapping": { "type": "object", "properties": { "keys": { "type": "object", "additionalProperties": { "type": "object", "properties": { "name": { "type": "string" }, "names": { "type": "array", "items": { "type": "string" } }, "default": { "oneOf": [ { "type": "object", "properties": {} }, { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] }, "array": { "type": "boolean" } } } } }, "required": ["keys"] }, "name_id_format": { "type": "string", "enum": [ "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" ] } }, "required": ["id", "entity_id"] }, "domains": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "domain": { "type": "string" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id"] } }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id"] }, "ListProvidersResponse": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "saml": { "type": "object", "properties": { "id": { "type": "string" }, "entity_id": { "type": "string" }, "metadata_url": { "type": "string" }, "metadata_xml": { "type": "string" }, "attribute_mapping": { "type": "object", "properties": { "keys": { "type": "object", "additionalProperties": { "type": "object", "properties": { "name": { "type": "string" }, "names": { "type": "array", "items": { "type": "string" } }, "default": { "oneOf": [ { "type": "object", "properties": {} }, { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] }, "array": { "type": "boolean" } } } } }, "required": ["keys"] }, "name_id_format": { "type": "string", "enum": [ "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" ] } }, "required": ["id", "entity_id"] }, "domains": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "domain": { "type": "string" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id"] } }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id"] } } }, "required": ["items"] }, "GetProviderResponse": { "type": "object", "properties": { "id": { "type": "string" }, "saml": { "type": "object", "properties": { "id": { "type": "string" }, "entity_id": { "type": "string" }, "metadata_url": { "type": "string" }, "metadata_xml": { "type": "string" }, "attribute_mapping": { "type": "object", "properties": { "keys": { "type": "object", "additionalProperties": { "type": "object", "properties": { "name": { "type": "string" }, "names": { "type": "array", "items": { "type": "string" } }, "default": { "oneOf": [ { "type": "object", "properties": {} }, { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] }, "array": { "type": "boolean" } } } } }, "required": ["keys"] }, "name_id_format": { "type": "string", "enum": [ "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" ] } }, "required": ["id", "entity_id"] }, "domains": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "domain": { "type": "string" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id"] } }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id"] }, "UpdateProviderBody": { "type": "object", "properties": { "metadata_xml": { "type": "string" }, "metadata_url": { "type": "string" }, "domains": { "type": "array", "items": { "type": "string" } }, "attribute_mapping": { "type": "object", "properties": { "keys": { "type": "object", "additionalProperties": { "type": "object", "properties": { "name": { "type": "string" }, "names": { "type": "array", "items": { "type": "string" } }, "default": { "oneOf": [ { "type": "object", "properties": {} }, { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] }, "array": { "type": "boolean" } } } } }, "required": ["keys"] }, "name_id_format": { "type": "string", "enum": [ "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" ] } }, "example": { "metadata_url": "https://sso.acme.com/metadata.xml", "domains": ["acme.com", "contractors.acme.com"] } }, "UpdateProviderResponse": { "type": "object", "properties": { "id": { "type": "string" }, "saml": { "type": "object", "properties": { "id": { "type": "string" }, "entity_id": { "type": "string" }, "metadata_url": { "type": "string" }, "metadata_xml": { "type": "string" }, "attribute_mapping": { "type": "object", "properties": { "keys": { "type": "object", "additionalProperties": { "type": "object", "properties": { "name": { "type": "string" }, "names": { "type": "array", "items": { "type": "string" } }, "default": { "oneOf": [ { "type": "object", "properties": {} }, { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] }, "array": { "type": "boolean" } } } } }, "required": ["keys"] }, "name_id_format": { "type": "string", "enum": [ "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" ] } }, "required": ["id", "entity_id"] }, "domains": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "domain": { "type": "string" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id"] } }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id"] }, "DeleteProviderResponse": { "type": "object", "properties": { "id": { "type": "string" }, "saml": { "type": "object", "properties": { "id": { "type": "string" }, "entity_id": { "type": "string" }, "metadata_url": { "type": "string" }, "metadata_xml": { "type": "string" }, "attribute_mapping": { "type": "object", "properties": { "keys": { "type": "object", "additionalProperties": { "type": "object", "properties": { "name": { "type": "string" }, "names": { "type": "array", "items": { "type": "string" } }, "default": { "oneOf": [ { "type": "object", "properties": {} }, { "type": "number" }, { "type": "string" }, { "type": "boolean" } ] }, "array": { "type": "boolean" } } } } }, "required": ["keys"] }, "name_id_format": { "type": "string", "enum": [ "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified", "urn:oasis:names:tc:SAML:2.0:nameid-format:transient", "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" ] } }, "required": ["id", "entity_id"] }, "domains": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "domain": { "type": "string" }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id"] } }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } }, "required": ["id"] }, "V1BackupsResponse": { "type": "object", "properties": { "region": { "type": "string" }, "walg_enabled": { "type": "boolean" }, "pitr_enabled": { "type": "boolean" }, "backups": { "type": "array", "items": { "type": "object", "properties": { "is_physical_backup": { "type": "boolean" }, "status": { "type": "string", "enum": ["COMPLETED", "FAILED", "PENDING", "REMOVED", "ARCHIVED", "CANCELLED"] }, "inserted_at": { "type": "string" } }, "required": ["is_physical_backup", "status", "inserted_at"] } }, "physical_backup_data": { "type": "object", "properties": { "earliest_physical_backup_date_unix": { "type": "integer" }, "latest_physical_backup_date_unix": { "type": "integer" } } } }, "required": ["region", "walg_enabled", "pitr_enabled", "backups", "physical_backup_data"] }, "V1RestorePitrBody": { "type": "object", "properties": { "recovery_time_target_unix": { "type": "integer", "minimum": 0, "format": "int64" } }, "required": ["recovery_time_target_unix"], "example": { "recovery_time_target_unix": 1740787200 } }, "V1RestorePointPostBody": { "type": "object", "properties": { "name": { "type": "string", "maxLength": 20 } }, "required": ["name"], "example": { "name": "before-upgrade" } }, "V1RestorePointResponse": { "type": "object", "properties": { "name": { "type": "string" }, "status": { "type": "string", "enum": ["AVAILABLE", "PENDING", "REMOVED", "FAILED"] }, "completed_on": { "type": "string", "format": "date-time", "nullable": true } }, "required": ["name", "status", "completed_on"] }, "V1UndoBody": { "type": "object", "properties": { "name": { "type": "string", "maxLength": 20 } }, "required": ["name"], "example": { "name": "before-upgrade" } }, "V1ListEntitlementsResponse": { "type": "object", "properties": { "entitlements": { "type": "array", "items": { "type": "object", "properties": { "feature": { "type": "object", "properties": { "key": { "type": "string", "enum": [ "instances.compute_update_available_sizes", "instances.read_replicas", "instances.disk_modifications", "instances.high_availability", "instances.orioledb", "replication.etl", "storage.max_file_size", "storage.max_file_size.configurable", "storage.image_transformations", "storage.vector_buckets", "storage.iceberg_catalog", "security.audit_logs_days", "security.questionnaire", "security.soc2_report", "security.private_link", "security.enforce_mfa", "log.retention_days", "custom_domain", "vanity_subdomain", "ipv4", "pitr.available_variants", "log_drains", "branching_limit", "branching_persistent", "auth.mfa_phone", "auth.mfa_web_authn", "auth.mfa_enhanced_security", "auth.hooks", "auth.platform.sso", "auth.custom_jwt_template", "auth.saml_2", "auth.user_sessions", "auth.leaked_password_protection", "auth.advanced_auth_settings", "auth.performance_settings", "auth.password_hibp", "backup.retention_days", "backup.restore_to_new_project", "function.max_count", "function.size_limit_mb", "realtime.max_concurrent_users", "realtime.max_events_per_second", "realtime.max_joins_per_second", "realtime.max_channels_per_client", "realtime.max_bytes_per_second", "realtime.max_presence_events_per_second", "realtime.max_payload_size_in_kb", "project_scoped_roles", "security.member_roles", "project_pausing", "project_cloning", "project_restore_after_expiry", "assistant.advance_model", "integrations.github_connections", "dedicated_pooler", "observability.dashboard_advanced_metrics" ] }, "type": { "type": "string", "enum": ["boolean", "numeric", "set"] } }, "required": ["key", "type"] }, "hasAccess": { "type": "boolean" }, "type": { "type": "string", "enum": ["boolean", "numeric", "set"] }, "config": { "oneOf": [ { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": ["enabled"] }, { "type": "object", "properties": { "enabled": { "type": "boolean" }, "value": { "type": "number" }, "unlimited": { "type": "boolean" }, "unit": { "type": "string" } }, "required": ["enabled", "value", "unlimited", "unit"] }, { "type": "object", "properties": { "enabled": { "type": "boolean" }, "set": { "type": "array", "items": { "type": "string" } } }, "required": ["enabled", "set"] } ] } }, "required": ["feature", "hasAccess", "type", "config"] } } }, "required": ["entitlements"] }, "V1OrganizationMemberResponse": { "type": "object", "properties": { "user_id": { "type": "string" }, "user_name": { "type": "string" }, "email": { "type": "string" }, "role_name": { "type": "string" }, "mfa_enabled": { "type": "boolean" } }, "required": ["user_id", "user_name", "role_name", "mfa_enabled"] }, "V1OrganizationSlugResponse": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "plan": { "type": "string", "enum": ["free", "pro", "team", "enterprise", "platform"] }, "opt_in_tags": { "type": "array", "items": { "type": "string", "enum": [ "AI_SQL_GENERATOR_OPT_IN", "AI_DATA_GENERATOR_OPT_IN", "AI_LOG_GENERATOR_OPT_IN" ] } }, "allowed_release_channels": { "type": "array", "items": { "type": "string", "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] } } }, "required": ["id", "name", "opt_in_tags", "allowed_release_channels"] }, "OrganizationProjectClaimResponse": { "type": "object", "properties": { "project": { "type": "object", "properties": { "ref": { "type": "string" }, "name": { "type": "string" } }, "required": ["ref", "name"] }, "preview": { "type": "object", "properties": { "valid": { "type": "boolean" }, "warnings": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "message": { "type": "string" } }, "required": ["key", "message"] } }, "errors": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "message": { "type": "string" } }, "required": ["key", "message"] } }, "info": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "message": { "type": "string" } }, "required": ["key", "message"] } }, "members_exceeding_free_project_limit": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "limit": { "type": "number" } }, "required": ["name", "limit"] } }, "source_subscription_plan": { "type": "string", "enum": ["free", "pro", "team", "enterprise", "platform"] }, "target_subscription_plan": { "type": "string", "enum": ["free", "pro", "team", "enterprise", "platform"], "nullable": true } }, "required": [ "valid", "warnings", "errors", "info", "members_exceeding_free_project_limit", "source_subscription_plan", "target_subscription_plan" ] }, "expires_at": { "type": "string" }, "created_at": { "type": "string" }, "created_by": { "type": "string", "format": "uuid" } }, "required": ["project", "preview", "expires_at", "created_at", "created_by"] }, "OrganizationProjectsResponse": { "type": "object", "properties": { "projects": { "type": "array", "items": { "type": "object", "properties": { "ref": { "type": "string" }, "name": { "type": "string" }, "cloud_provider": { "type": "string" }, "region": { "type": "string" }, "is_branch": { "type": "boolean" }, "status": { "type": "string", "enum": [ "INACTIVE", "ACTIVE_HEALTHY", "ACTIVE_UNHEALTHY", "COMING_UP", "UNKNOWN", "GOING_DOWN", "INIT_FAILED", "REMOVED", "RESTORING", "UPGRADING", "PAUSING", "RESTORE_FAILED", "RESTARTING", "PAUSE_FAILED", "RESIZING" ] }, "inserted_at": { "type": "string" }, "databases": { "type": "array", "items": { "type": "object", "properties": { "infra_compute_size": { "type": "string", "enum": [ "pico", "nano", "micro", "small", "medium", "large", "xlarge", "2xlarge", "4xlarge", "8xlarge", "12xlarge", "16xlarge", "24xlarge", "24xlarge_optimized_memory", "24xlarge_optimized_cpu", "24xlarge_high_memory", "48xlarge", "48xlarge_optimized_memory", "48xlarge_optimized_cpu", "48xlarge_high_memory" ] }, "region": { "type": "string" }, "status": { "type": "string", "enum": [ "ACTIVE_HEALTHY", "ACTIVE_UNHEALTHY", "COMING_UP", "GOING_DOWN", "INIT_FAILED", "REMOVED", "RESTORING", "UNKNOWN", "INIT_READ_REPLICA", "INIT_READ_REPLICA_FAILED", "RESTARTING", "RESIZING" ] }, "cloud_provider": { "type": "string" }, "identifier": { "type": "string" }, "type": { "type": "string", "enum": ["PRIMARY", "READ_REPLICA"] }, "disk_volume_size_gb": { "type": "number" }, "disk_type": { "type": "string", "enum": ["gp3", "io2"] }, "disk_throughput_mbps": { "type": "number" }, "disk_last_modified_at": { "type": "string" } }, "required": ["region", "status", "cloud_provider", "identifier", "type"] } } }, "required": [ "ref", "name", "cloud_provider", "region", "is_branch", "status", "inserted_at", "databases" ] } }, "pagination": { "type": "object", "properties": { "count": { "type": "number", "description": "Total number of projects. Use this to calculate the total number of pages." }, "limit": { "type": "number", "description": "Maximum number of projects per page" }, "offset": { "type": "number", "description": "Number of projects skipped in this response" } }, "required": ["count", "limit", "offset"] } }, "required": ["projects", "pagination"] } } } }