mirror of
https://github.com/supabase/supabase.git
synced 2026-05-25 05:03:29 +08:00
* docs: update js client libs docs * chore: update test snapshot for specs * ci(docs): run tests on spec changes --------- Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
8054 lines
285 KiB
JSON
8054 lines
285 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"]
|
|
},
|
|
"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"]
|
|
},
|
|
"delete": {
|
|
"description": "Deletes the specified database branch",
|
|
"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 }
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"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"]
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
},
|
|
"/v1/projects": {
|
|
"get": {
|
|
"description": "Returns a list of all projects you've previously created.",
|
|
"operationId": "v1-list-all-projects",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/components/schemas/V1ProjectWithDatabaseResponse" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "List all projects",
|
|
"tags": ["Projects"]
|
|
},
|
|
"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": [] }],
|
|
"summary": "Create a project",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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": [] }],
|
|
"summary": "List all organizations",
|
|
"tags": ["Organizations"]
|
|
},
|
|
"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": [] }],
|
|
"summary": "Create an organization",
|
|
"tags": ["Organizations"]
|
|
}
|
|
},
|
|
"/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": { "type": "string", "enum": ["https://api.supabase.io/mcp"] }
|
|
}
|
|
],
|
|
"responses": { "204": { "description": "" } },
|
|
"security": [{ "oauth2": ["read"] }],
|
|
"summary": "[Beta] Authorize user through oauth",
|
|
"tags": ["OAuth"]
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
},
|
|
"/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"]
|
|
}
|
|
},
|
|
"/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": [] }],
|
|
"summary": "Authorize user through oauth and claim a project",
|
|
"tags": ["OAuth"],
|
|
"x-internal": true
|
|
}
|
|
},
|
|
"/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": [] }],
|
|
"summary": "Lists SQL snippets for the logged in user",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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": [] }],
|
|
"summary": "Gets a specific SQL snippet",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Get project api keys",
|
|
"tags": ["Secrets"]
|
|
},
|
|
"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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Creates a new API key for the project",
|
|
"tags": ["Secrets"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"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"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"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"]
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Updates an API key for the project",
|
|
"tags": ["Secrets"]
|
|
},
|
|
"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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Get API key",
|
|
"tags": ["Secrets"]
|
|
},
|
|
"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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Deletes an API key for the project",
|
|
"tags": ["Secrets"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve database branches" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "List all database branches",
|
|
"tags": ["Environments"]
|
|
},
|
|
"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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to create database branch" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Create a database branch",
|
|
"tags": ["Environments"]
|
|
},
|
|
"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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to disable preview branching" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Disables preview branching",
|
|
"tags": ["Environments"]
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to fetch database branch" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Get a database branch",
|
|
"tags": ["Environments"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's custom hostname config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Gets project's custom hostname config",
|
|
"tags": ["Domains"]
|
|
},
|
|
"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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to delete project custom hostname configuration" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Deletes a project's custom hostname configuration",
|
|
"tags": ["Domains"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update project custom hostname configuration" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Updates project's custom hostname configuration",
|
|
"tags": ["Domains"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to verify project custom hostname configuration" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Attempts to verify the DNS configuration for project's custom hostname configuration",
|
|
"tags": ["Domains"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to activate project custom hostname configuration" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Activates a custom hostname for a project.",
|
|
"tags": ["Domains"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's network bans" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Gets project's network bans",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's enriched network bans" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Gets project's network bans with additional information about which databases they affect",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to remove network bans." }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Remove network bans.",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's network restrictions" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Gets project's network restrictions",
|
|
"tags": ["Projects"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update project network restrictions" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Alpha] Updates project's network restrictions by adding or removing CIDRs",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update project network restrictions" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Updates project's network restrictions",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's pgsodium config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Gets project's pgsodium config",
|
|
"tags": ["Secrets"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update project's pgsodium config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"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"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's postgrest config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project's postgrest config",
|
|
"tags": ["Rest"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update project's postgrest config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Updates project's postgrest config",
|
|
"tags": ["Rest"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets a specific project that belongs to the authenticated user",
|
|
"tags": ["Projects"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Deletes the given project",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's secrets" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "List all secrets",
|
|
"tags": ["Secrets"]
|
|
},
|
|
"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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to create project's secrets" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Bulk create secrets",
|
|
"tags": ["Secrets"]
|
|
},
|
|
"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": { "type": "array", "items": { "type": "string" } } }
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": { "description": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to delete secrets with given names" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Bulk delete secrets",
|
|
"tags": ["Secrets"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's SSL enforcement config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Get project's SSL enforcement configuration.",
|
|
"tags": ["Database"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update project's SSL enforcement configuration." }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Update project's SSL enforcement configuration.",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to generate TypeScript types" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Generate TypeScript types",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to get project vanity subdomain configuration" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Gets current vanity subdomain config",
|
|
"tags": ["Domains"]
|
|
},
|
|
"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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to delete project vanity subdomain configuration" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Deletes a project's vanity subdomain configuration",
|
|
"tags": ["Domains"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to check project vanity subdomain configuration" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Checks vanity subdomain availability",
|
|
"tags": ["Domains"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to activate project vanity subdomain configuration" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Activates a vanity subdomain for a project.",
|
|
"tags": ["Domains"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to initiate project upgrade" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Upgrades the project's Postgres version",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to determine project upgrade eligibility" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Returns the project's eligibility for upgrades",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project upgrade status" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Gets the latest status of the project's upgrade",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to get project readonly mode status" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Returns project's readonly mode status",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to disable project's readonly mode" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Disables project's readonly mode for the next 15 minutes",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to set up read replica" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Set up a read replica",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to remove read replica" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Remove a read replica",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's service health status" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project's service health status",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"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"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"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"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Create a new signing key for the project in standby status",
|
|
"tags": ["Auth"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "List all signing keys for the project",
|
|
"tags": ["Auth"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Get information about a signing key",
|
|
"tags": ["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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Remove a signing key from a project. Only possible if the key has been in revoked status for a while.",
|
|
"tags": ["Auth"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Update a signing key, mainly its status",
|
|
"tags": ["Auth"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's storage config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project's storage config",
|
|
"tags": ["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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update project's storage config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Updates project's storage config",
|
|
"tags": ["Storage"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's Postgres config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project's Postgres config",
|
|
"tags": ["Database"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update project's Postgres config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Updates project's Postgres config",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's pgbouncer config" }
|
|
},
|
|
"summary": "Get project's pgbouncer config",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's supavisor config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project's supavisor config",
|
|
"tags": ["Database"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update project's supavisor config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Updates project's supavisor config",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's auth config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project's auth config",
|
|
"tags": ["Auth"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update project's auth config" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Updates a project's auth config",
|
|
"tags": ["Auth"]
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Creates a new third-party auth integration",
|
|
"tags": ["Auth"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Lists all third-party auth integrations",
|
|
"tags": ["Auth"]
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Removes a third-party auth integration",
|
|
"tags": ["Auth"]
|
|
},
|
|
"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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Get a third-party integration",
|
|
"tags": ["Auth"]
|
|
}
|
|
},
|
|
"/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": "" }, "403": { "description": "" } },
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Pauses the given project",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Lists available restore versions for the given project",
|
|
"tags": ["Projects"]
|
|
},
|
|
"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": "" }, "403": { "description": "" } },
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Restores the given project",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/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": "" }, "403": { "description": "" } },
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Cancels the given project restoration",
|
|
"tags": ["Projects"]
|
|
}
|
|
},
|
|
"/v1/projects/{ref}/billing/addons": {
|
|
"get": {
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to list project addons" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Lists project addons",
|
|
"tags": ["Billing"]
|
|
},
|
|
"patch": {
|
|
"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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to apply project addon" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Applies project addon",
|
|
"tags": ["Billing"]
|
|
}
|
|
},
|
|
"/v1/projects/{ref}/billing/addons/{addon_variant}": {
|
|
"delete": {
|
|
"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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to remove project addon" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Removes project addon",
|
|
"tags": ["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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project claim token",
|
|
"tags": ["Projects"],
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Creates project claim token",
|
|
"tags": ["Projects"],
|
|
"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": "" }, "403": { "description": "" } },
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Revokes project claim token",
|
|
"tags": ["Projects"],
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project performance advisors.",
|
|
"tags": ["Advisors"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project security advisors.",
|
|
"tags": ["Advisors"]
|
|
}
|
|
},
|
|
"/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",
|
|
"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", "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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project's logs",
|
|
"tags": ["Analytics"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to get project's usage api counts" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project's usage api counts",
|
|
"tags": ["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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to get project's usage api requests count" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project's usage api requests count",
|
|
"tags": ["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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to get project's function combined statistics" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets a project's function combined statistics",
|
|
"tags": ["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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to create login role" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Create a login role for CLI with temporary password",
|
|
"tags": ["Database"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to delete login roles" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Delete existing login roles used by CLI",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to list database migrations" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] List applied migration versions",
|
|
"tags": ["Database"]
|
|
},
|
|
"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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to apply database migration" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Apply a database migration",
|
|
"tags": ["Database"]
|
|
},
|
|
"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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to upsert database migration" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Upsert a database migration without applying",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to run sql query" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Run sql query",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to enable Database Webhooks on the project" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "[Beta] Enables Database Webhooks on the project",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets database metadata for the given project.",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to list database jit access" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Get user-id to role mappings for JIT access",
|
|
"tags": ["Database"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to authorize database jit access" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Authorize user-id to role mappings for JIT access",
|
|
"tags": ["Database"]
|
|
},
|
|
"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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to upsert database migration" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Updates a user mapping for JIT access",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to list database jit access" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "List all user-id to role mappings for JIT access",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to remove JIT access" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Delete JIT access by user-id",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve project's functions" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "List all functions",
|
|
"tags": ["Edge Functions"]
|
|
},
|
|
"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" } }
|
|
}
|
|
},
|
|
"402": { "description": "Maximum number of functions reached for Plan" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to create project's function" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Create a function",
|
|
"tags": ["Edge Functions"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"402": { "description": "Maximum number of functions reached for Plan" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update functions" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Bulk update functions",
|
|
"tags": ["Edge Functions"]
|
|
}
|
|
},
|
|
"/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-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" }
|
|
}
|
|
}
|
|
},
|
|
"402": { "description": "Maximum number of functions reached for Plan" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to deploy function" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Deploy a function",
|
|
"tags": ["Edge Functions"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve function with given slug" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Retrieve a function",
|
|
"tags": ["Edge Functions"]
|
|
},
|
|
"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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to update function with given slug" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Update a function",
|
|
"tags": ["Edge Functions"]
|
|
},
|
|
"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": "" },
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to delete function with given slug" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Delete a function",
|
|
"tags": ["Edge Functions"]
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to retrieve function body with given slug" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Retrieve a function body",
|
|
"tags": ["Edge Functions"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to get list of buckets" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Lists all buckets",
|
|
"tags": ["Storage"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"404": { "description": "SAML 2.0 support is not enabled for this project" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Creates a new SSO provider",
|
|
"tags": ["Auth"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"404": { "description": "SAML 2.0 support is not enabled for this project" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Lists all SSO providers",
|
|
"tags": ["Auth"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"404": {
|
|
"description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist"
|
|
}
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets a SSO provider by its UUID",
|
|
"tags": ["Auth"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"404": {
|
|
"description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist"
|
|
}
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Updates a SSO provider by its UUID",
|
|
"tags": ["Auth"]
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"404": {
|
|
"description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist"
|
|
}
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Removes a SSO provider by its UUID",
|
|
"tags": ["Auth"]
|
|
}
|
|
},
|
|
"/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" } }
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to get backups" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Lists all backups",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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": "" }, "403": { "description": "" } },
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Restores a PITR backup for a database",
|
|
"tags": ["Database"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Initiates a creation of a restore point for a database",
|
|
"tags": ["Database"],
|
|
"x-internal": true
|
|
},
|
|
"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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" },
|
|
"500": { "description": "Failed to get requested restore points" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Get restore points for project",
|
|
"tags": ["Database"],
|
|
"x-internal": true
|
|
}
|
|
},
|
|
"/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": "" }, "403": { "description": "" } },
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Initiates an undo to a given restore point",
|
|
"tags": ["Database"],
|
|
"x-internal": true
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "List members of an organization",
|
|
"tags": ["Organizations"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets information about the organization",
|
|
"tags": ["Organizations"]
|
|
}
|
|
},
|
|
"/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" }
|
|
}
|
|
}
|
|
},
|
|
"403": { "description": "" }
|
|
},
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Gets project details for the specified organization and claim token",
|
|
"tags": ["Organizations"],
|
|
"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": "" }, "403": { "description": "" } },
|
|
"security": [{ "bearer": [] }],
|
|
"summary": "Claims project for the specified organization",
|
|
"tags": ["Organizations"],
|
|
"x-internal": true
|
|
}
|
|
}
|
|
},
|
|
"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": "Storage related endpoints" }
|
|
],
|
|
"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" }
|
|
}
|
|
},
|
|
"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" }
|
|
},
|
|
"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"]
|
|
},
|
|
"V1ProjectWithDatabaseResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": { "type": "string", "description": "Id of your project" },
|
|
"organization_id": { "type": "string", "description": "Slug of your organization" },
|
|
"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", "organization_id", "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": "Slug of your organization" },
|
|
"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",
|
|
"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"
|
|
]
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"required": ["db_pass", "name", "organization_id", "region"],
|
|
"additionalProperties": false,
|
|
"hideDefinitions": ["release_channel", "postgres_engine"]
|
|
},
|
|
"V1ProjectResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": { "type": "string", "description": "Id of your project" },
|
|
"organization_id": { "type": "string", "description": "Slug of your organization" },
|
|
"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", "organization_id", "name", "region", "created_at", "status"]
|
|
},
|
|
"OrganizationResponseV1": {
|
|
"type": "object",
|
|
"properties": { "id": { "type": "string" }, "name": { "type": "string" } },
|
|
"required": ["id", "name"]
|
|
},
|
|
"CreateOrganizationV1": {
|
|
"type": "object",
|
|
"properties": { "name": { "type": "string" } },
|
|
"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",
|
|
"enum": ["https://api.supabase.io/mcp"],
|
|
"description": "Resource indicator for MCP (Model Context Protocol) clients"
|
|
}
|
|
},
|
|
"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"]
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"inserted_at",
|
|
"updated_at",
|
|
"type",
|
|
"visibility",
|
|
"name",
|
|
"description",
|
|
"project",
|
|
"owner",
|
|
"updated_by"
|
|
]
|
|
}
|
|
},
|
|
"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"]
|
|
},
|
|
"content": {
|
|
"type": "object",
|
|
"properties": {
|
|
"favorite": { "type": "boolean" },
|
|
"schema_version": { "type": "string" },
|
|
"sql": { "type": "string" }
|
|
},
|
|
"required": ["favorite", "schema_version", "sql"]
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"inserted_at",
|
|
"updated_at",
|
|
"type",
|
|
"visibility",
|
|
"name",
|
|
"description",
|
|
"project",
|
|
"owner",
|
|
"updated_by",
|
|
"content"
|
|
]
|
|
},
|
|
"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" }
|
|
},
|
|
"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", "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"]
|
|
},
|
|
"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"]
|
|
}
|
|
},
|
|
"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" } },
|
|
"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" } },
|
|
"unsupported_extensions": { "type": "array", "items": { "type": "string" } },
|
|
"user_defined_objects_in_internal_schemas": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
}
|
|
},
|
|
"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"
|
|
]
|
|
},
|
|
"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" },
|
|
"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" },
|
|
"db_connected": { "type": "boolean" },
|
|
"connected_cluster": { "type": "integer" }
|
|
},
|
|
"required": ["healthy", "db_connected", "connected_cluster"]
|
|
}
|
|
]
|
|
},
|
|
"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": {
|
|
"kty": { "type": "string", "enum": ["RSA"] },
|
|
"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": {
|
|
"kty": { "type": "string", "enum": ["EC"] },
|
|
"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": {
|
|
"kty": { "type": "string", "enum": ["OKP"] },
|
|
"crv": { "type": "string", "enum": ["Ed25519"] },
|
|
"x": { "type": "string" },
|
|
"d": { "type": "string" }
|
|
},
|
|
"required": ["kty", "crv", "x", "d"],
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"kty": { "type": "string", "enum": ["oct"] },
|
|
"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
|
|
},
|
|
"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" } },
|
|
"required": ["enabled"]
|
|
}
|
|
},
|
|
"required": ["imageTransformation", "s3Protocol"]
|
|
},
|
|
"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"]
|
|
}
|
|
},
|
|
"required": ["fileSizeLimit", "features", "capabilities", "external"]
|
|
},
|
|
"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" } },
|
|
"required": ["enabled"]
|
|
}
|
|
},
|
|
"required": ["imageTransformation", "s3Protocol"]
|
|
},
|
|
"external": {
|
|
"type": "object",
|
|
"properties": { "upstreamTarget": { "type": "string", "enum": ["main", "canary"] } },
|
|
"required": ["upstreamTarget"]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"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" },
|
|
"track_commit_timestamp": { "type": "boolean" },
|
|
"wal_keep_size": { "type": "string" },
|
|
"wal_sender_timeout": { "type": "string" },
|
|
"work_mem": { "type": "string" }
|
|
}
|
|
},
|
|
"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" },
|
|
"track_commit_timestamp": { "type": "boolean" },
|
|
"wal_keep_size": { "type": "string" },
|
|
"wal_sender_timeout": { "type": "string" },
|
|
"work_mem": { "type": "string" },
|
|
"restart_database": { "type": "boolean" }
|
|
},
|
|
"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"]
|
|
},
|
|
"AuthConfigResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"api_max_request_duration": { "type": "integer", "nullable": true },
|
|
"db_max_pool_size": { "type": "integer", "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_enabled": { "type": "boolean", "nullable": true },
|
|
"external_apple_secret": { "type": "string", "nullable": true },
|
|
"external_azure_client_id": { "type": "string", "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_enabled": { "type": "boolean", "nullable": true },
|
|
"external_bitbucket_secret": { "type": "string", "nullable": true },
|
|
"external_discord_client_id": { "type": "string", "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_enabled": { "type": "boolean", "nullable": true },
|
|
"external_facebook_secret": { "type": "string", "nullable": true },
|
|
"external_figma_client_id": { "type": "string", "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_enabled": { "type": "boolean", "nullable": true },
|
|
"external_github_secret": { "type": "string", "nullable": true },
|
|
"external_gitlab_client_id": { "type": "string", "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_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_enabled": { "type": "boolean", "nullable": true },
|
|
"external_kakao_secret": { "type": "string", "nullable": true },
|
|
"external_keycloak_client_id": { "type": "string", "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_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_enabled": { "type": "boolean", "nullable": true },
|
|
"external_slack_oidc_secret": { "type": "string", "nullable": true },
|
|
"external_notion_client_id": { "type": "string", "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_enabled": { "type": "boolean", "nullable": true },
|
|
"external_slack_secret": { "type": "string", "nullable": true },
|
|
"external_spotify_client_id": { "type": "string", "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_enabled": { "type": "boolean", "nullable": true },
|
|
"external_twitch_secret": { "type": "string", "nullable": true },
|
|
"external_twitter_client_id": { "type": "string", "nullable": true },
|
|
"external_twitter_enabled": { "type": "boolean", "nullable": true },
|
|
"external_twitter_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_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 },
|
|
"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_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 },
|
|
"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_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 }
|
|
},
|
|
"required": [
|
|
"api_max_request_duration",
|
|
"db_max_pool_size",
|
|
"disable_signup",
|
|
"external_anonymous_users_enabled",
|
|
"external_apple_additional_client_ids",
|
|
"external_apple_client_id",
|
|
"external_apple_enabled",
|
|
"external_apple_secret",
|
|
"external_azure_client_id",
|
|
"external_azure_enabled",
|
|
"external_azure_secret",
|
|
"external_azure_url",
|
|
"external_bitbucket_client_id",
|
|
"external_bitbucket_enabled",
|
|
"external_bitbucket_secret",
|
|
"external_discord_client_id",
|
|
"external_discord_enabled",
|
|
"external_discord_secret",
|
|
"external_email_enabled",
|
|
"external_facebook_client_id",
|
|
"external_facebook_enabled",
|
|
"external_facebook_secret",
|
|
"external_figma_client_id",
|
|
"external_figma_enabled",
|
|
"external_figma_secret",
|
|
"external_github_client_id",
|
|
"external_github_enabled",
|
|
"external_github_secret",
|
|
"external_gitlab_client_id",
|
|
"external_gitlab_enabled",
|
|
"external_gitlab_secret",
|
|
"external_gitlab_url",
|
|
"external_google_additional_client_ids",
|
|
"external_google_client_id",
|
|
"external_google_enabled",
|
|
"external_google_secret",
|
|
"external_google_skip_nonce_check",
|
|
"external_kakao_client_id",
|
|
"external_kakao_enabled",
|
|
"external_kakao_secret",
|
|
"external_keycloak_client_id",
|
|
"external_keycloak_enabled",
|
|
"external_keycloak_secret",
|
|
"external_keycloak_url",
|
|
"external_linkedin_oidc_client_id",
|
|
"external_linkedin_oidc_enabled",
|
|
"external_linkedin_oidc_secret",
|
|
"external_slack_oidc_client_id",
|
|
"external_slack_oidc_enabled",
|
|
"external_slack_oidc_secret",
|
|
"external_notion_client_id",
|
|
"external_notion_enabled",
|
|
"external_notion_secret",
|
|
"external_phone_enabled",
|
|
"external_slack_client_id",
|
|
"external_slack_enabled",
|
|
"external_slack_secret",
|
|
"external_spotify_client_id",
|
|
"external_spotify_enabled",
|
|
"external_spotify_secret",
|
|
"external_twitch_client_id",
|
|
"external_twitch_enabled",
|
|
"external_twitch_secret",
|
|
"external_twitter_client_id",
|
|
"external_twitter_enabled",
|
|
"external_twitter_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_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",
|
|
"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_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",
|
|
"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_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"
|
|
]
|
|
},
|
|
"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_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 },
|
|
"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 },
|
|
"external_apple_enabled": { "type": "boolean", "nullable": true },
|
|
"external_apple_client_id": { "type": "string", "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_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_secret": { "type": "string", "nullable": true },
|
|
"external_discord_enabled": { "type": "boolean", "nullable": true },
|
|
"external_discord_client_id": { "type": "string", "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_secret": { "type": "string", "nullable": true },
|
|
"external_figma_enabled": { "type": "boolean", "nullable": true },
|
|
"external_figma_client_id": { "type": "string", "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_secret": { "type": "string", "nullable": true },
|
|
"external_gitlab_enabled": { "type": "boolean", "nullable": true },
|
|
"external_gitlab_client_id": { "type": "string", "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_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_secret": { "type": "string", "nullable": true },
|
|
"external_keycloak_enabled": { "type": "boolean", "nullable": true },
|
|
"external_keycloak_client_id": { "type": "string", "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_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_secret": { "type": "string", "nullable": true },
|
|
"external_notion_enabled": { "type": "boolean", "nullable": true },
|
|
"external_notion_client_id": { "type": "string", "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_secret": { "type": "string", "nullable": true },
|
|
"external_spotify_enabled": { "type": "boolean", "nullable": true },
|
|
"external_spotify_client_id": { "type": "string", "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_secret": { "type": "string", "nullable": true },
|
|
"external_twitter_enabled": { "type": "boolean", "nullable": true },
|
|
"external_twitter_client_id": { "type": "string", "nullable": true },
|
|
"external_twitter_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_secret": { "type": "string", "nullable": true },
|
|
"db_max_pool_size": { "type": "integer", "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 }
|
|
}
|
|
},
|
|
"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" }
|
|
},
|
|
"required": ["query"]
|
|
},
|
|
"V1UpsertMigrationBody": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query": { "type": "string", "minLength": 1 },
|
|
"name": { "type": "string" }
|
|
},
|
|
"required": ["query"]
|
|
},
|
|
"V1RunQueryBody": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query": { "type": "string", "minLength": 1 },
|
|
"read_only": { "type": "boolean" }
|
|
},
|
|
"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"]
|
|
},
|
|
"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-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-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"]
|
|
},
|
|
"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"] }
|
|
},
|
|
"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"] },
|
|
"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"]
|
|
}
|
|
},
|
|
"target_organization_eligible": { "type": "boolean", "nullable": true },
|
|
"target_organization_has_free_project_slots": { "type": "boolean", "nullable": true },
|
|
"source_subscription_plan": {
|
|
"type": "string",
|
|
"enum": ["free", "pro", "team", "enterprise"]
|
|
},
|
|
"target_subscription_plan": {
|
|
"type": "string",
|
|
"enum": ["free", "pro", "team", "enterprise"],
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": [
|
|
"valid",
|
|
"warnings",
|
|
"errors",
|
|
"info",
|
|
"members_exceeding_free_project_limit",
|
|
"target_organization_eligible",
|
|
"target_organization_has_free_project_slots",
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|