mirror of
https://github.com/supabase/supabase.git
synced 2026-07-01 15:54:19 +08:00
* docs: update js sdk docs (2.93.0) * docs: fix references for javascript typespec --------- Co-authored-by: supabase-releaser[bot] <223506987+supabase-releaser[bot]@users.noreply.github.com> Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
10796 lines
408 KiB
JSON
10796 lines
408 KiB
JSON
{
|
||
"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 ID",
|
||
"schema": {
|
||
"oneOf": [
|
||
{
|
||
"type": "string",
|
||
"minLength": 20,
|
||
"maxLength": 20,
|
||
"pattern": "^[a-z]+$",
|
||
"description": "Project ref"
|
||
},
|
||
{ "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": [] }],
|
||
"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 ID",
|
||
"schema": {
|
||
"oneOf": [
|
||
{
|
||
"type": "string",
|
||
"minLength": 20,
|
||
"maxLength": 20,
|
||
"pattern": "^[a-z]+$",
|
||
"description": "Project ref"
|
||
},
|
||
{ "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": [] }],
|
||
"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 ID",
|
||
"schema": {
|
||
"oneOf": [
|
||
{
|
||
"type": "string",
|
||
"minLength": 20,
|
||
"maxLength": 20,
|
||
"pattern": "^[a-z]+$",
|
||
"description": "Project ref"
|
||
},
|
||
{ "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", "type": "boolean" }
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": { "$ref": "#/components/schemas/BranchDeleteResponse" }
|
||
}
|
||
}
|
||
},
|
||
"500": { "description": "Failed to delete database branch" }
|
||
},
|
||
"security": [{ "bearer": [] }],
|
||
"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 ID",
|
||
"schema": {
|
||
"oneOf": [
|
||
{
|
||
"type": "string",
|
||
"minLength": 20,
|
||
"maxLength": 20,
|
||
"pattern": "^[a-z]+$",
|
||
"description": "Project ref"
|
||
},
|
||
{ "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": [] }],
|
||
"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 ID",
|
||
"schema": {
|
||
"oneOf": [
|
||
{
|
||
"type": "string",
|
||
"minLength": 20,
|
||
"maxLength": 20,
|
||
"pattern": "^[a-z]+$",
|
||
"description": "Project ref"
|
||
},
|
||
{ "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": [] }],
|
||
"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 ID",
|
||
"schema": {
|
||
"oneOf": [
|
||
{
|
||
"type": "string",
|
||
"minLength": 20,
|
||
"maxLength": 20,
|
||
"pattern": "^[a-z]+$",
|
||
"description": "Project ref"
|
||
},
|
||
{ "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": [] }],
|
||
"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 ID",
|
||
"schema": {
|
||
"oneOf": [
|
||
{
|
||
"type": "string",
|
||
"minLength": 20,
|
||
"maxLength": 20,
|
||
"pattern": "^[a-z]+$",
|
||
"description": "Project ref"
|
||
},
|
||
{ "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": [] }],
|
||
"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 ID",
|
||
"schema": {
|
||
"oneOf": [
|
||
{
|
||
"type": "string",
|
||
"minLength": 20,
|
||
"maxLength": 20,
|
||
"pattern": "^[a-z]+$",
|
||
"description": "Project ref"
|
||
},
|
||
{ "type": "string", "format": "uuid", "deprecated": true }
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"name": "included_schemas",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "type": "string" }
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"content": { "text/plain": { "schema": { "type": "string" } } },
|
||
"description": ""
|
||
},
|
||
"500": { "description": "Failed to diff database branch" }
|
||
},
|
||
"security": [{ "bearer": [] }],
|
||
"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": { "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",
|
||
"schema": {
|
||
"example": "nano",
|
||
"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"
|
||
]
|
||
}
|
||
}
|
||
],
|
||
"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", "type": "string" }
|
||
},
|
||
{
|
||
"name": "response_type",
|
||
"required": true,
|
||
"in": "query",
|
||
"schema": { "type": "string", "enum": ["code", "token", "id_token token"] }
|
||
},
|
||
{
|
||
"name": "redirect_uri",
|
||
"required": true,
|
||
"in": "query",
|
||
"schema": { "type": "string" }
|
||
},
|
||
{ "name": "scope", "required": false, "in": "query", "schema": { "type": "string" } },
|
||
{ "name": "state", "required": false, "in": "query", "schema": { "type": "string" } },
|
||
{
|
||
"name": "response_mode",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "type": "string" }
|
||
},
|
||
{
|
||
"name": "code_challenge",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "type": "string" }
|
||
},
|
||
{
|
||
"name": "code_challenge_method",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "type": "string", "enum": ["plain", "sha256", "S256"] }
|
||
},
|
||
{
|
||
"name": "organization_slug",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Organization slug",
|
||
"schema": { "pattern": "^[\\w-]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "client_id",
|
||
"required": true,
|
||
"in": "query",
|
||
"schema": { "format": "uuid", "type": "string" }
|
||
},
|
||
{
|
||
"name": "response_type",
|
||
"required": true,
|
||
"in": "query",
|
||
"schema": { "type": "string", "enum": ["code", "token", "id_token token"] }
|
||
},
|
||
{
|
||
"name": "redirect_uri",
|
||
"required": true,
|
||
"in": "query",
|
||
"schema": { "type": "string" }
|
||
},
|
||
{ "name": "state", "required": false, "in": "query", "schema": { "type": "string" } },
|
||
{
|
||
"name": "response_mode",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "type": "string" }
|
||
},
|
||
{
|
||
"name": "code_challenge",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "type": "string" }
|
||
},
|
||
{
|
||
"name": "code_challenge_method",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "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]+$", "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", "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/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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "offset",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "minimum": 0, "type": "number" }
|
||
},
|
||
{
|
||
"name": "limit",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "minimum": 10, "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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "run_id",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Action Run ID",
|
||
"schema": { "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "run_id",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Action Run ID",
|
||
"schema": { "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "run_id",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Action Run ID",
|
||
"schema": { "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "reveal",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "reveal",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "enabled",
|
||
"required": true,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "id",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": { "format": "uuid", "type": "string" }
|
||
},
|
||
{
|
||
"name": "reveal",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "id",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": { "format": "uuid", "type": "string" }
|
||
},
|
||
{
|
||
"name": "reveal",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "id",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": { "format": "uuid", "type": "string" }
|
||
},
|
||
{
|
||
"name": "reveal",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "type": "boolean" }
|
||
},
|
||
{
|
||
"name": "was_compromised",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "type": "boolean" }
|
||
},
|
||
{ "name": "reason", "required": false, "in": "query", "schema": { "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]+$", "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_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]+$", "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_development_write"] }],
|
||
"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]+$", "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_development_write"] }],
|
||
"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]+$", "type": "string" }
|
||
},
|
||
{ "name": "name", "required": true, "in": "path", "schema": { "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_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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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}/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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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", "type": "string" }
|
||
},
|
||
{
|
||
"name": "ref",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Project ref",
|
||
"schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "tracking_id",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "services",
|
||
"required": true,
|
||
"in": "query",
|
||
"schema": {
|
||
"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, "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]+$", "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]+$", "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]+$", "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]+$", "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", "type": "string" }
|
||
},
|
||
{
|
||
"name": "ref",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Project ref",
|
||
"schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "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", "type": "string" }
|
||
},
|
||
{
|
||
"name": "ref",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Project ref",
|
||
"schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "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", "type": "string" }
|
||
},
|
||
{
|
||
"name": "ref",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Project ref",
|
||
"schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "tpa_id",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": { "format": "uuid", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "tpa_id",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": { "format": "uuid", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "addon_variant",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": {
|
||
"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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "lint_type",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "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]+$", "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", "type": "string" }
|
||
},
|
||
{
|
||
"name": "iso_timestamp_end",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "format": "date-time", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "interval",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": {
|
||
"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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "interval",
|
||
"required": true,
|
||
"in": "query",
|
||
"schema": { "type": "string", "enum": ["15min", "1hr", "3hr", "1day"] }
|
||
},
|
||
{ "name": "function_id", "required": true, "in": "query", "schema": { "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]+$", "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]+$", "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]+$", "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": "[Beta] 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]+$", "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": "[Beta] 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]+$", "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": "[Beta] 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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "gte",
|
||
"required": true,
|
||
"in": "query",
|
||
"description": "Rollback migrations greater or equal to this version",
|
||
"schema": { "pattern": "^\\d+$", "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": "[Beta] 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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "version",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": { "pattern": "^\\d+$", "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": "[Beta] 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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "version",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": { "pattern": "^\\d+$", "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": "[Beta] 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]+$", "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"] }],
|
||
"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]+$", "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]+$", "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]+$", "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]+$", "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_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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "user_id",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": { "format": "uuid", "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}/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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "slug",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "pattern": "^[A-Za-z0-9_-]+$", "type": "string" }
|
||
},
|
||
{ "name": "name", "required": false, "in": "query", "schema": { "type": "string" } },
|
||
{
|
||
"name": "verify_jwt",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "type": "boolean" }
|
||
},
|
||
{
|
||
"name": "import_map",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "type": "boolean" }
|
||
},
|
||
{
|
||
"name": "entrypoint_path",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "type": "string" }
|
||
},
|
||
{
|
||
"name": "import_map_path",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "type": "string" }
|
||
},
|
||
{
|
||
"name": "ezbr_sha256",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "slug",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "pattern": "^[A-Za-z][A-Za-z0-9_-]*$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "bundleOnly",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "function_slug",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Function slug",
|
||
"schema": { "pattern": "^[A-Za-z0-9_-]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "function_slug",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Function slug",
|
||
"schema": { "pattern": "^[A-Za-z0-9_-]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "slug",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "pattern": "^[A-Za-z0-9_-]+$", "type": "string" }
|
||
},
|
||
{ "name": "name", "required": false, "in": "query", "schema": { "type": "string" } },
|
||
{
|
||
"name": "verify_jwt",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "type": "boolean" }
|
||
},
|
||
{
|
||
"name": "import_map",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Boolean string, true or false",
|
||
"schema": { "type": "boolean" }
|
||
},
|
||
{
|
||
"name": "entrypoint_path",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "type": "string" }
|
||
},
|
||
{
|
||
"name": "import_map_path",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "type": "string" }
|
||
},
|
||
{
|
||
"name": "ezbr_sha256",
|
||
"required": false,
|
||
"in": "query",
|
||
"schema": { "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "function_slug",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Function slug",
|
||
"schema": { "pattern": "^[A-Za-z0-9_-]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "function_slug",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Function slug",
|
||
"schema": { "pattern": "^[A-Za-z0-9_-]+$", "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]+$", "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/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]+$", "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": [] }],
|
||
"summary": "Get disk utilization",
|
||
"tags": ["Projects"],
|
||
"x-endpoint-owners": ["management-api", "infra"]
|
||
}
|
||
},
|
||
"/v1/projects/{ref}/config/disk": {
|
||
"post": {
|
||
"operationId": "v1-modify-database-disk",
|
||
"parameters": [
|
||
{
|
||
"name": "ref",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Project ref",
|
||
"schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "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_add_ons_write"] }],
|
||
"summary": "Modify database disk",
|
||
"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]+$", "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": [] }],
|
||
"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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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": [] }],
|
||
"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]+$", "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": [] }],
|
||
"summary": "Updates realtime configuration",
|
||
"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]+$", "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]+$", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "provider_id",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": { "format": "uuid", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "provider_id",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": { "format": "uuid", "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]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "provider_id",
|
||
"required": true,
|
||
"in": "path",
|
||
"schema": { "format": "uuid", "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]+$", "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]+$", "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]+$", "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]+$", "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]+$", "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}/members": {
|
||
"get": {
|
||
"operationId": "v1-list-organization-members",
|
||
"parameters": [
|
||
{
|
||
"name": "slug",
|
||
"required": true,
|
||
"in": "path",
|
||
"description": "Organization slug",
|
||
"schema": { "pattern": "^[\\w-]+$", "type": "string" }
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "array",
|
||
"items": { "$ref": "#/components/schemas/V1OrganizationMemberResponse" }
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"401": { "description": "Unauthorized" },
|
||
"403": { "description": "Forbidden action" },
|
||
"429": { "description": "Rate limit exceeded" }
|
||
},
|
||
"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-]+$", "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-]+$", "type": "string" }
|
||
},
|
||
{ "name": "token", "required": true, "in": "path", "schema": { "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-]+$", "type": "string" }
|
||
},
|
||
{ "name": "token", "required": true, "in": "path", "schema": { "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-]+$", "type": "string" }
|
||
},
|
||
{
|
||
"name": "offset",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Number of projects to skip",
|
||
"schema": { "minimum": 0, "default": 0, "type": "integer" }
|
||
},
|
||
{
|
||
"name": "limit",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Number of projects to return per page",
|
||
"schema": { "minimum": 1, "maximum": 100, "default": 100, "type": "integer" }
|
||
},
|
||
{
|
||
"name": "search",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Search projects by name",
|
||
"schema": { "type": "string" }
|
||
},
|
||
{
|
||
"name": "sort",
|
||
"required": false,
|
||
"in": "query",
|
||
"description": "Sort order for projects",
|
||
"schema": {
|
||
"default": "name_asc",
|
||
"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": "?statuses=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.<br>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."
|
||
}
|
||
}
|
||
},
|
||
"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" } }
|
||
},
|
||
"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"
|
||
},
|
||
"organization_id": {
|
||
"type": "string",
|
||
"description": "Deprecated: Use `organization_slug` instead.",
|
||
"deprecated": true
|
||
},
|
||
"organization_slug": {
|
||
"type": "string",
|
||
"pattern": "^[\\w-]+$",
|
||
"description": "Organization slug"
|
||
},
|
||
"name": { "type": "string", "description": "Name of your project" },
|
||
"region": {
|
||
"type": "string",
|
||
"description": "Region of your project",
|
||
"example": "us-east-1"
|
||
},
|
||
"created_at": {
|
||
"type": "string",
|
||
"description": "Creation timestamp",
|
||
"example": "2023-03-29T16:32:59Z"
|
||
},
|
||
"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"
|
||
},
|
||
"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.",
|
||
"example": "apac"
|
||
}
|
||
},
|
||
"required": ["type", "code"]
|
||
}
|
||
],
|
||
"description": "Region selection. Only one of region or region_selection can be specified.",
|
||
"example": "{ type: 'smartGroup', code: 'americas' }"
|
||
},
|
||
"kps_enabled": {
|
||
"type": "boolean",
|
||
"deprecated": true,
|
||
"description": "This field is deprecated and is ignored in this request"
|
||
},
|
||
"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"
|
||
]
|
||
},
|
||
"template_url": {
|
||
"type": "string",
|
||
"format": "uri",
|
||
"description": "Template URL used to create the project from the CLI.",
|
||
"example": "https://github.com/supabase/supabase/tree/master/examples/slack-clone/nextjs-slack-clone"
|
||
},
|
||
"release_channel": {
|
||
"type": "string",
|
||
"enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"],
|
||
"description": "Release channel. If not provided, GA will be used.",
|
||
"deprecated": true
|
||
},
|
||
"postgres_engine": {
|
||
"type": "string",
|
||
"enum": ["15", "17", "17-oriole"],
|
||
"description": "Postgres engine version. If not provided, the latest version will be used.",
|
||
"deprecated": true
|
||
}
|
||
},
|
||
"required": ["db_pass", "name", "organization_slug"],
|
||
"additionalProperties": false,
|
||
"hideDefinitions": ["release_channel", "postgres_engine"]
|
||
},
|
||
"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"
|
||
},
|
||
"organization_id": {
|
||
"type": "string",
|
||
"description": "Deprecated: Use `organization_slug` instead.",
|
||
"deprecated": true
|
||
},
|
||
"organization_slug": {
|
||
"type": "string",
|
||
"pattern": "^[\\w-]+$",
|
||
"description": "Organization slug"
|
||
},
|
||
"name": { "type": "string", "description": "Name of your project" },
|
||
"region": {
|
||
"type": "string",
|
||
"description": "Region of your project",
|
||
"example": "us-east-1"
|
||
},
|
||
"created_at": {
|
||
"type": "string",
|
||
"description": "Creation timestamp",
|
||
"example": "2023-03-29T16:32:59Z"
|
||
},
|
||
"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" },
|
||
"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" },
|
||
"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" },
|
||
"name": { "type": "string" }
|
||
},
|
||
"required": ["id", "slug", "name"]
|
||
},
|
||
"CreateOrganizationV1": {
|
||
"type": "object",
|
||
"properties": { "name": { "type": "string", "maxLength": 256 } },
|
||
"required": ["name"],
|
||
"additionalProperties": false
|
||
},
|
||
"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
|
||
},
|
||
"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
|
||
},
|
||
"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"
|
||
]
|
||
},
|
||
"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"]
|
||
}
|
||
}
|
||
},
|
||
"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"]
|
||
},
|
||
"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 }
|
||
}
|
||
},
|
||
"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"]
|
||
},
|
||
"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"]
|
||
},
|
||
"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"]
|
||
},
|
||
"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" } }
|
||
},
|
||
"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" } }
|
||
}
|
||
},
|
||
"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" } }
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"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"]
|
||
},
|
||
"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 }
|
||
}
|
||
},
|
||
"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"]
|
||
},
|
||
"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.",
|
||
"example": "string"
|
||
},
|
||
"value": { "type": "string", "maxLength": 24576 }
|
||
},
|
||
"required": ["name", "value"]
|
||
}
|
||
},
|
||
"DeleteSecretsBody": { "type": "array", "items": { "type": "string" } },
|
||
"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"]
|
||
},
|
||
"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"]
|
||
},
|
||
"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"]
|
||
},
|
||
"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",
|
||
"example": "us-east-1"
|
||
}
|
||
},
|
||
"required": ["read_replica_region"]
|
||
},
|
||
"RemoveReadReplicaBody": {
|
||
"type": "object",
|
||
"properties": { "database_identifier": { "type": "string" } },
|
||
"required": ["database_identifier"]
|
||
},
|
||
"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" },
|
||
"connected_cluster": { "type": "integer" }
|
||
},
|
||
"required": ["healthy", "db_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
|
||
},
|
||
"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
|
||
},
|
||
"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 },
|
||
"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_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": "integer", "nullable": true },
|
||
"sessions_single_per_user": { "type": "boolean", "nullable": true },
|
||
"sessions_tags": { "type": "string", "nullable": true },
|
||
"sessions_timebox": { "type": "integer", "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 }
|
||
},
|
||
"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",
|
||
"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_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"
|
||
]
|
||
},
|
||
"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_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": "integer", "minimum": 0, "nullable": true },
|
||
"sessions_inactivity_timeout": { "type": "integer", "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 },
|
||
"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 }
|
||
}
|
||
},
|
||
"CreateThirdPartyAuthBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"oidc_issuer_url": { "type": "string" },
|
||
"jwks_url": { "type": "string" },
|
||
"custom_jwks": {}
|
||
}
|
||
},
|
||
"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"]
|
||
},
|
||
"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"]
|
||
},
|
||
"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"]
|
||
},
|
||
"V1UpsertMigrationBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"query": { "type": "string", "minLength": 1 },
|
||
"name": { "type": "string" },
|
||
"rollback": { "type": "string" }
|
||
},
|
||
"required": ["query"]
|
||
},
|
||
"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" } }
|
||
},
|
||
"V1RunQueryBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"query": { "type": "string", "minLength": 1 },
|
||
"parameters": { "type": "array", "items": {} },
|
||
"read_only": { "type": "boolean" }
|
||
},
|
||
"required": ["query"]
|
||
},
|
||
"V1ReadOnlyQueryBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"query": { "type": "string", "minLength": 1 },
|
||
"parameters": { "type": "array", "items": {} }
|
||
},
|
||
"required": ["query"]
|
||
},
|
||
"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"]
|
||
},
|
||
"V1UpdatePasswordResponse": {
|
||
"type": "object",
|
||
"properties": { "message": { "type": "string" } },
|
||
"required": ["message"]
|
||
},
|
||
"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"]
|
||
},
|
||
"AuthorizeJitAccessBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"role": { "type": "string", "minLength": 1 },
|
||
"rhost": { "type": "string", "minLength": 1 }
|
||
},
|
||
"required": ["role", "rhost"]
|
||
},
|
||
"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"]
|
||
},
|
||
"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"]
|
||
},
|
||
"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"]
|
||
}
|
||
},
|
||
"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"]
|
||
},
|
||
"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" }
|
||
}
|
||
},
|
||
"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"]
|
||
},
|
||
"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"]
|
||
},
|
||
"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"]
|
||
},
|
||
"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
|
||
},
|
||
"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"
|
||
}
|
||
}
|
||
},
|
||
"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
|
||
},
|
||
"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": "Whether to suspend realtime"
|
||
}
|
||
},
|
||
"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"
|
||
]
|
||
},
|
||
"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": "Whether to suspend realtime" }
|
||
},
|
||
"additionalProperties": false
|
||
},
|
||
"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"]
|
||
},
|
||
"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"
|
||
]
|
||
}
|
||
}
|
||
},
|
||
"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"]
|
||
},
|
||
"V1RestorePointPostBody": {
|
||
"type": "object",
|
||
"properties": { "name": { "type": "string", "maxLength": 20 } },
|
||
"required": ["name"]
|
||
},
|
||
"V1RestorePointResponse": {
|
||
"type": "object",
|
||
"properties": {
|
||
"name": { "type": "string" },
|
||
"status": { "type": "string", "enum": ["AVAILABLE", "PENDING", "REMOVED", "FAILED"] }
|
||
},
|
||
"required": ["name", "status"]
|
||
},
|
||
"V1UndoBody": {
|
||
"type": "object",
|
||
"properties": { "name": { "type": "string", "maxLength": 20 } },
|
||
"required": ["name"]
|
||
},
|
||
"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"]
|
||
}
|
||
}
|
||
}
|
||
}
|