From 68eb0863bd6ef13cb4eed80444ca9dfcd05f8e18 Mon Sep 17 00:00:00 2001 From: MIngPAPA <10231313+MIngPAPA@users.noreply.github.com> Date: Mon, 21 Apr 2025 00:47:06 +0000 Subject: [PATCH] feat: update mgmt api docs --- apps/docs/spec/api_v1_openapi.json | 3579 +++-- .../transforms/api_v1_openapi_deparsed.json | 11438 ++++++++++------ 2 files changed, 9418 insertions(+), 5599 deletions(-) diff --git a/apps/docs/spec/api_v1_openapi.json b/apps/docs/spec/api_v1_openapi.json index 5ecb7b3a1a1d8..efc40c1a593ac 100644 --- a/apps/docs/spec/api_v1_openapi.json +++ b/apps/docs/spec/api_v1_openapi.json @@ -12,7 +12,7 @@ "required": true, "in": "path", "description": "Branch ID", - "schema": { "type": "string" } + "schema": { "format": "uuid", "type": "string" } } ], "responses": { @@ -39,7 +39,7 @@ "required": true, "in": "path", "description": "Branch ID", - "schema": { "type": "string" } + "schema": { "format": "uuid", "type": "string" } } ], "requestBody": { @@ -70,7 +70,7 @@ "required": true, "in": "path", "description": "Branch ID", - "schema": { "type": "string" } + "schema": { "format": "uuid", "type": "string" } } ], "responses": { @@ -99,9 +99,15 @@ "required": true, "in": "path", "description": "Branch ID", - "schema": { "type": "string" } + "schema": { "format": "uuid", "type": "string" } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/BranchActionBody" } } + } + }, "responses": { "201": { "description": "", @@ -117,6 +123,41 @@ "security": [{ "bearer": [] }] } }, + "/v1/branches/{branch_id}/merge": { + "post": { + "operationId": "v1-merge-a-branch", + "summary": "Merges a database branch", + "description": "Merges the specified database branch", + "parameters": [ + { + "name": "branch_id", + "required": true, + "in": "path", + "description": "Branch ID", + "schema": { "format": "uuid", "type": "string" } + } + ], + "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" } + }, + "tags": ["Environments"], + "security": [{ "bearer": [] }] + } + }, "/v1/branches/{branch_id}/reset": { "post": { "operationId": "v1-reset-a-branch", @@ -128,9 +169,15 @@ "required": true, "in": "path", "description": "Branch ID", - "schema": { "type": "string" } + "schema": { "format": "uuid", "type": "string" } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/BranchActionBody" } } + } + }, "responses": { "201": { "description": "", @@ -247,7 +294,12 @@ "operationId": "v1-authorize-user", "summary": "[Beta] Authorize user through oauth", "parameters": [ - { "name": "client_id", "required": true, "in": "query", "schema": { "type": "string" } }, + { + "name": "client_id", + "required": true, + "in": "query", + "schema": { "format": "uuid", "type": "string" } + }, { "name": "response_type", "required": true, @@ -336,6 +388,13 @@ "operationId": "v1-list-all-snippets", "summary": "Lists SQL snippets for the logged in user", "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", @@ -354,12 +413,6 @@ "required": false, "in": "query", "schema": { "enum": ["asc", "desc"], "type": "string" } - }, - { - "name": "project_ref", - "required": false, - "in": "query", - "schema": { "type": "string" } } ], "responses": { @@ -410,9 +463,9 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } }, - { "name": "reveal", "required": true, "in": "query", "schema": { "type": "boolean" } } + { "name": "reveal", "required": false, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { @@ -425,7 +478,8 @@ } } } - } + }, + "403": { "description": "" } }, "tags": ["Secrets"], "security": [{ "bearer": [] }] @@ -439,9 +493,9 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } }, - { "name": "reveal", "required": true, "in": "query", "schema": { "type": "boolean" } } + { "name": "reveal", "required": false, "in": "query", "schema": { "type": "string" } } ], "requestBody": { "required": true, @@ -455,7 +509,8 @@ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiKeyResponse" } } } - } + }, + "403": { "description": "" } }, "tags": ["Secrets"], "security": [{ "bearer": [] }] @@ -471,10 +526,15 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } }, - { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } }, - { "name": "reveal", "required": true, "in": "query", "schema": { "type": "boolean" } } + { + "name": "id", + "required": true, + "in": "path", + "schema": { "format": "uuid", "type": "string" } + }, + { "name": "reveal", "required": false, "in": "query", "schema": { "type": "string" } } ], "requestBody": { "required": true, @@ -488,7 +548,8 @@ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiKeyResponse" } } } - } + }, + "403": { "description": "" } }, "tags": ["Secrets"], "security": [{ "bearer": [] }] @@ -502,10 +563,15 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } + }, + { + "name": "id", + "required": true, + "in": "path", + "schema": { "format": "uuid", "type": "string" } }, - { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } }, - { "name": "reveal", "required": true, "in": "query", "schema": { "type": "boolean" } } + { "name": "reveal", "required": false, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { @@ -513,7 +579,8 @@ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiKeyResponse" } } } - } + }, + "403": { "description": "" } }, "tags": ["Secrets"], "security": [{ "bearer": [] }] @@ -527,10 +594,15 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } + }, + { + "name": "id", + "required": true, + "in": "path", + "schema": { "format": "uuid", "type": "string" } }, - { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } }, - { "name": "reveal", "required": true, "in": "query", "schema": { "type": "boolean" } } + { "name": "reveal", "required": false, "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { @@ -556,7 +628,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -571,6 +643,7 @@ } } }, + "403": { "description": "" }, "500": { "description": "Failed to retrieve database branches" } }, "tags": ["Environments"], @@ -586,7 +659,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -602,6 +675,7 @@ "application/json": { "schema": { "$ref": "#/components/schemas/BranchResponse" } } } }, + "403": { "description": "" }, "500": { "description": "Failed to create database branch" } }, "tags": ["Environments"], @@ -617,11 +691,12 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { "200": { "description": "" }, + "403": { "description": "" }, "500": { "description": "Failed to disable preview branching" } }, "tags": ["Environments"], @@ -638,7 +713,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -665,7 +740,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -687,7 +762,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -724,7 +799,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -753,7 +828,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -782,7 +857,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -811,7 +886,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -841,7 +916,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -870,7 +945,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -907,7 +982,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -934,7 +1009,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -971,7 +1046,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -998,14 +1073,14 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { "$ref": "#/components/schemas/UpdatePostgrestConfigBody" } + "schema": { "$ref": "#/components/schemas/V1UpdatePostgrestConfigBody" } } } }, @@ -1035,7 +1110,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1047,6 +1122,7 @@ } } }, + "403": { "description": "" }, "500": { "description": "Failed to retrieve project" } }, "tags": ["Projects"], @@ -1061,7 +1137,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1090,7 +1166,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1121,18 +1197,13 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { "required": true, "content": { - "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/CreateSecretBody" } - } - } + "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }, "responses": { @@ -1153,7 +1224,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -1184,7 +1255,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1211,7 +1282,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -1255,7 +1326,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1284,7 +1355,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1311,7 +1382,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1333,7 +1404,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -1368,7 +1439,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -1403,7 +1474,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -1438,7 +1509,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1467,7 +1538,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } }, { "name": "tracking_id", @@ -1502,7 +1573,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1514,6 +1585,7 @@ } } }, + "403": { "description": "" }, "500": { "description": "Failed to get project readonly mode status" } }, "tags": ["Database"], @@ -1530,11 +1602,12 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { "201": { "description": "" }, + "403": { "description": "" }, "500": { "description": "Failed to disable project's readonly mode" } }, "tags": ["Database"], @@ -1551,7 +1624,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -1581,7 +1654,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -1611,25 +1684,14 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } }, + { "name": "services", "required": true, "in": "query", "schema": { "type": "string" } }, { "name": "timeout_ms", "required": false, "in": "query", "schema": { "minimum": 0, "maximum": 10000, "type": "integer" } - }, - { - "name": "services", - "required": true, - "in": "query", - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": ["auth", "db", "pooler", "realtime", "rest", "storage"] - } - } } ], "responses": { @@ -1651,137 +1713,85 @@ "security": [{ "bearer": [] }] } }, - "/v1/projects/{ref}/config/storage": { - "get": { - "operationId": "v1-get-storage-config", - "summary": "Gets project's storage config", - "parameters": [ - { - "name": "ref", - "required": true, - "in": "path", - "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/StorageConfigResponse" } - } - } - }, - "403": { "description": "" }, - "500": { "description": "Failed to retrieve project's storage config" } - }, - "tags": ["Storage"], - "security": [{ "bearer": [] }] - }, - "patch": { - "operationId": "v1-update-storage-config", - "summary": "Updates project's storage config", + "/v1/projects/{ref}/config/auth/signing-keys": { + "post": { + "operationId": "createSigningKeyForProject", + "summary": "[Alpha] Create a new signing key for the project in standby status", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { "$ref": "#/components/schemas/UpdateStorageConfigBody" } + "schema": { "$ref": "#/components/schemas/CreateSigningKeyBody" } } } }, "responses": { - "200": { "description": "" }, - "403": { "description": "" }, - "500": { "description": "Failed to update project's storage config" } - }, - "tags": ["Storage"], - "security": [{ "bearer": [] }] - } - }, - "/v1/projects/{ref}/config/database/postgres": { - "get": { - "operationId": "v1-get-postgres-config", - "summary": "Gets project's Postgres config", - "parameters": [ - { - "name": "ref", - "required": true, - "in": "path", - "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } - } - ], - "responses": { - "200": { - "description": "", + "201": { + "description": "[Alpha] Create a new signing key for the project in standby status", "content": { "application/json": { - "schema": { "$ref": "#/components/schemas/PostgresConfigResponse" } + "schema": { "$ref": "#/components/schemas/CreateSigningKeyBody" } } } }, - "500": { "description": "Failed to retrieve project's Postgres config" } + "403": { "description": "" } }, - "tags": ["Database"], + "tags": ["Auth"], "security": [{ "bearer": [] }] }, - "put": { - "operationId": "v1-update-postgres-config", - "summary": "Updates project's Postgres config", + "get": { + "operationId": "listSigningKeysForProject", + "summary": "[Alpha] List all signing keys for the project", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "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" } + "schema": { "$ref": "#/components/schemas/SigningKeysResponse" } } } }, - "403": { "description": "" }, - "500": { "description": "Failed to update project's Postgres config" } + "403": { "description": "" } }, - "tags": ["Database"], + "tags": ["Auth"], "security": [{ "bearer": [] }] } }, - "/v1/projects/{ref}/config/database/pgbouncer": { + "/v1/projects/{ref}/config/auth/signing-keys/{id}": { "get": { - "operationId": "v1-get-project-pgbouncer-config", - "summary": "Get project's pgbouncer config", + "operationId": "getSigningKeyForProject", + "summary": "[Alpha] Get information about a 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, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1789,26 +1799,31 @@ "description": "", "content": { "application/json": { - "schema": { "$ref": "#/components/schemas/V1PgbouncerConfigResponse" } + "schema": { "$ref": "#/components/schemas/SigningKeyResponse" } } } }, - "500": { "description": "Failed to retrieve project's pgbouncer config" } + "403": { "description": "" } }, - "tags": ["Database"] - } - }, - "/v1/projects/{ref}/config/database/pooler": { - "get": { - "operationId": "v1-get-supavisor-config", - "summary": "Gets project's supavisor config", + "tags": ["Auth"], + "security": [{ "bearer": [] }] + }, + "delete": { + "operationId": "deleteSigningKey", + "summary": "[Alpha] Remove a signing key from a project, where the status is previously_used", "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, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1816,35 +1831,38 @@ "description": "", "content": { "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/SupavisorConfigResponse" } - } + "schema": { "$ref": "#/components/schemas/SigningKeyResponse" } } } }, - "500": { "description": "Failed to retrieve project's supavisor config" } + "403": { "description": "" } }, - "tags": ["Database"], + "tags": ["Auth"], "security": [{ "bearer": [] }] }, "patch": { - "operationId": "v1-update-supavisor-config", - "summary": "Updates project's supavisor config", + "operationId": "patchSigningKey", + "summary": "[Alpha] Update a signing key, mainly its status", "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, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { "$ref": "#/components/schemas/UpdateSupavisorConfigBody" } + "schema": { "$ref": "#/components/schemas/UpdateSigningKeyBody" } } } }, @@ -1853,28 +1871,27 @@ "description": "", "content": { "application/json": { - "schema": { "$ref": "#/components/schemas/UpdateSupavisorConfigResponse" } + "schema": { "$ref": "#/components/schemas/SigningKeyResponse" } } } }, - "403": { "description": "" }, - "500": { "description": "Failed to update project's supavisor config" } + "403": { "description": "" } }, - "tags": ["Database"], + "tags": ["Auth"], "security": [{ "bearer": [] }] } }, - "/v1/projects/{ref}/config/auth": { + "/v1/projects/{ref}/config/storage": { "get": { - "operationId": "v1-get-auth-service-config", - "summary": "Gets project's auth config", + "operationId": "v1-get-storage-config", + "summary": "Gets project's storage config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1882,95 +1899,120 @@ "description": "", "content": { "application/json": { - "schema": { "$ref": "#/components/schemas/AuthConfigResponse" } + "schema": { "$ref": "#/components/schemas/StorageConfigResponse" } } } }, "403": { "description": "" }, - "500": { "description": "Failed to retrieve project's auth config" } + "500": { "description": "Failed to retrieve project's storage config" } }, - "tags": ["Auth"], + "tags": ["Storage"], "security": [{ "bearer": [] }] }, "patch": { - "operationId": "v1-update-auth-service-config", - "summary": "Updates a project's auth config", + "operationId": "v1-update-storage-config", + "summary": "Updates project's storage config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { "$ref": "#/components/schemas/UpdateAuthConfigBody" } + "schema": { "$ref": "#/components/schemas/UpdateStorageConfigBody" } } } }, + "responses": { + "200": { "description": "" }, + "403": { "description": "" }, + "500": { "description": "Failed to update project's storage config" } + }, + "tags": ["Storage"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/config/database/postgres": { + "get": { + "operationId": "v1-get-postgres-config", + "summary": "Gets project's 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/AuthConfigResponse" } + "schema": { "$ref": "#/components/schemas/PostgresConfigResponse" } } } }, "403": { "description": "" }, - "500": { "description": "Failed to update project's auth config" } + "500": { "description": "Failed to retrieve project's Postgres config" } }, - "tags": ["Auth"], + "tags": ["Database"], "security": [{ "bearer": [] }] - } - }, - "/v1/projects/{ref}/config/auth/third-party-auth": { - "post": { - "operationId": "createTPAForProject", - "summary": "Creates a new third-party auth integration", + }, + "put": { + "operationId": "v1-update-postgres-config", + "summary": "Updates project's Postgres config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { "$ref": "#/components/schemas/CreateThirdPartyAuthBody" } + "schema": { "$ref": "#/components/schemas/UpdatePostgresConfigBody" } } } }, "responses": { - "201": { + "200": { "description": "", "content": { - "application/json": { "schema": { "$ref": "#/components/schemas/ThirdPartyAuth" } } + "application/json": { + "schema": { "$ref": "#/components/schemas/PostgresConfigResponse" } + } } }, - "403": { "description": "" } + "403": { "description": "" }, + "500": { "description": "Failed to update project's Postgres config" } }, - "tags": ["Auth"], + "tags": ["Database"], "security": [{ "bearer": [] }] - }, + } + }, + "/v1/projects/{ref}/config/database/pgbouncer": { "get": { - "operationId": "listTPAForProject", - "summary": "[Alpha] Lists all third-party auth integrations", + "operationId": "v1-get-project-pgbouncer-config", + "summary": "Get project's pgbouncer config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -1978,201 +2020,164 @@ "description": "", "content": { "application/json": { - "schema": { - "type": "array", - "items": { "$ref": "#/components/schemas/ThirdPartyAuth" } - } + "schema": { "$ref": "#/components/schemas/V1PgbouncerConfigResponse" } } } }, - "403": { "description": "" } + "403": { "description": "" }, + "500": { "description": "Failed to retrieve project's pgbouncer config" } }, - "tags": ["Auth"], - "security": [{ "bearer": [] }] + "tags": ["Database"] } }, - "/v1/projects/{ref}/config/auth/third-party-auth/{tpa_id}": { - "delete": { - "operationId": "deleteTPAForProject", - "summary": "[Alpha] Removes a third-party auth integration", + "/v1/projects/{ref}/config/database/pooler": { + "get": { + "operationId": "getSupavisorConfig", + "summary": "Gets project's supavisor config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } - }, - { "name": "tpa_id", "required": true, "in": "path", "schema": { "type": "string" } } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } + } ], "responses": { "200": { "description": "", "content": { - "application/json": { "schema": { "$ref": "#/components/schemas/ThirdPartyAuth" } } + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/SupavisorConfigResponse" } + } + } } }, - "403": { "description": "" } + "500": { "description": "Failed to retrieve project's supavisor config" } }, - "tags": ["Auth"], + "tags": ["Database"], "security": [{ "bearer": [] }] }, - "get": { - "operationId": "getTPAForProject", - "summary": "[Alpha] Get a third-party integration", + "patch": { + "operationId": "updateSupavisorConfig", + "summary": "Updates project's supavisor config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } - }, - { "name": "tpa_id", "required": true, "in": "path", "schema": { "type": "string" } } + "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/ThirdPartyAuth" } } + "application/json": { + "schema": { "$ref": "#/components/schemas/UpdateSupavisorConfigResponse" } + } } }, - "403": { "description": "" } + "403": { "description": "" }, + "500": { "description": "Failed to update project's supavisor config" } }, - "tags": ["Auth"], + "tags": ["Database"], "security": [{ "bearer": [] }] } }, - "/v1/projects/{ref}/pause": { - "post": { - "operationId": "v1-pause-a-project", - "summary": "Pauses the given project", + "/v1/projects/{ref}/config/auth": { + "get": { + "operationId": "v1-get-auth-service-config", + "summary": "Gets project's auth config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], - "responses": { "200": { "description": "" }, "403": { "description": "" } }, - "tags": ["Projects"], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/AuthConfigResponse" } + } + } + }, + "403": { "description": "" }, + "500": { "description": "Failed to retrieve project's auth config" } + }, + "tags": ["Auth"], "security": [{ "bearer": [] }] - } - }, - "/v1/projects/{ref}/database/query": { - "post": { - "operationId": "v1-run-a-query", - "summary": "[Beta] Run sql query", + }, + "patch": { + "operationId": "v1-update-auth-service-config", + "summary": "Updates a project's auth config", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { "required": true, "content": { - "application/json": { "schema": { "$ref": "#/components/schemas/V1RunQueryBody" } } + "application/json": { + "schema": { "$ref": "#/components/schemas/UpdateAuthConfigBody" } + } } }, "responses": { - "201": { + "200": { "description": "", - "content": { "application/json": { "schema": { "type": "object" } } } + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/AuthConfigResponse" } + } + } }, "403": { "description": "" }, - "500": { "description": "Failed to run sql query" } - }, - "tags": ["Database"], - "security": [{ "bearer": [] }] - } - }, - "/v1/projects/{ref}/database/webhooks/enable": { - "post": { - "operationId": "v1-enable-database-webhook", - "summary": "[Beta] Enables Database Webhooks on the project", - "parameters": [ - { - "name": "ref", - "required": true, - "in": "path", - "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } - } - ], - "responses": { - "201": { "description": "" }, - "403": { "description": "" }, - "500": { "description": "Failed to enable Database Webhooks on the project" } + "500": { "description": "Failed to update project's auth config" } }, - "tags": ["Database"], + "tags": ["Auth"], "security": [{ "bearer": [] }] } }, - "/v1/projects/{ref}/functions": { + "/v1/projects/{ref}/config/auth/third-party-auth": { "post": { - "operationId": "v1-create-a-function", - "summary": "Create a function", - "description": "Creates a function and adds it to the specified project.", + "operationId": "createTPAForProject", + "summary": "Creates a new third-party auth integration", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "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", - "schema": { "type": "boolean" } - }, - { - "name": "import_map", - "required": false, - "in": "query", - "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": "compute_multiplier", - "required": false, - "in": "query", - "schema": { "minimum": 1, "maximum": 4, "type": "number" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { "$ref": "#/components/schemas/V1CreateFunctionBody" } - }, - "application/vnd.denoland.eszip": { - "schema": { "$ref": "#/components/schemas/V1CreateFunctionBody" } + "schema": { "$ref": "#/components/schemas/CreateThirdPartyAuthBody" } } } }, @@ -2180,26 +2185,24 @@ "201": { "description": "", "content": { - "application/json": { "schema": { "$ref": "#/components/schemas/FunctionResponse" } } + "application/json": { "schema": { "$ref": "#/components/schemas/ThirdPartyAuth" } } } }, - "403": { "description": "" }, - "500": { "description": "Failed to create project's function" } + "403": { "description": "" } }, - "tags": ["Edge Functions"], + "tags": ["Auth"], "security": [{ "bearer": [] }] }, "get": { - "operationId": "v1-list-all-functions", - "summary": "List all functions", - "description": "Returns all functions you've previously added to the specified project.", + "operationId": "listTPAForProject", + "summary": "Lists all third-party auth integrations", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -2209,45 +2212,699 @@ "application/json": { "schema": { "type": "array", - "items": { "$ref": "#/components/schemas/FunctionResponse" } + "items": { "$ref": "#/components/schemas/ThirdPartyAuth" } } } } }, - "403": { "description": "" }, - "500": { "description": "Failed to retrieve project's functions" } + "403": { "description": "" } }, - "tags": ["Edge Functions"], + "tags": ["Auth"], "security": [{ "bearer": [] }] } }, - "/v1/projects/{ref}/functions/{function_slug}": { - "get": { - "operationId": "v1-get-a-function", - "summary": "Retrieve a function", - "description": "Retrieves a function with the specified slug and project.", + "/v1/projects/{ref}/config/auth/third-party-auth/{tpa_id}": { + "delete": { + "operationId": "deleteTPAForProject", + "summary": "Removes a third-party auth integration", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } }, { - "name": "function_slug", + "name": "tpa_id", "required": true, "in": "path", - "description": "Function slug", - "schema": { "pattern": "/^[A-Za-z0-9_-]+$/", "type": "string" } + "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "description": "", "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/FunctionSlugResponse" } + "application/json": { "schema": { "$ref": "#/components/schemas/ThirdPartyAuth" } } + } + }, + "403": { "description": "" } + }, + "tags": ["Auth"], + "security": [{ "bearer": [] }] + }, + "get": { + "operationId": "getTPAForProject", + "summary": "Get a third-party 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": "" } + }, + "tags": ["Auth"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/pause": { + "post": { + "operationId": "v1-pause-a-project", + "summary": "Pauses the given 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": "" } }, + "tags": ["Projects"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/restore": { + "get": { + "operationId": "v1-list-available-restore-versions", + "summary": "Lists available restore versions for the given 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/GetProjectAvailableRestoreVersionsResponse" + } + } + } + }, + "403": { "description": "" } + }, + "tags": ["Projects"], + "security": [{ "bearer": [] }] + }, + "post": { + "operationId": "v1-restore-a-project", + "summary": "Restores the given 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": "" } }, + "tags": ["Projects"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/restore/cancel": { + "post": { + "operationId": "v1-cancel-a-project-restoration", + "summary": "Cancels the given 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": "" } }, + "tags": ["Projects"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/billing/addons": { + "get": { + "operationId": "v1-list-project-addons", + "summary": "Lists 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/ListProjectAddonsResponseDto" } + } + } + }, + "403": { "description": "" }, + "500": { "description": "Failed to list project addons" } + }, + "security": [{ "bearer": [] }] + }, + "patch": { + "operationId": "v1-apply-project-addon", + "summary": "Applies 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/ApplyProjectAddonBodyDto" } + } + } + }, + "responses": { + "200": { "description": "" }, + "403": { "description": "" }, + "500": { "description": "Failed to apply project addon" } + }, + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/billing/addons/{addon_variant}": { + "delete": { + "operationId": "v1-remove-project-addon", + "summary": "Removes 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", + "oneOf": [ + { + "type": "string", + "enum": [ + "ci_micro", + "ci_small", + "ci_medium", + "ci_large", + "ci_xlarge", + "ci_2xlarge", + "ci_4xlarge", + "ci_8xlarge", + "ci_12xlarge", + "ci_16xlarge" + ] + }, + { "type": "string", "enum": ["cd_default"] }, + { "type": "string", "enum": ["pitr_7", "pitr_14", "pitr_28"] }, + { "type": "string", "enum": ["ipv4_default"] } + ], + "schema": {} + } + ], + "responses": { + "200": { "description": "" }, + "403": { "description": "" }, + "500": { "description": "Failed to remove project addon" } + }, + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/advisors/performance": { + "get": { + "operationId": "getPerformanceAdvisors", + "summary": "Gets project performance advisors.", + "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.", + "deprecated": true, + "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/V1ProjectAdvisorsResponseDto" } + } + } + }, + "403": { "description": "" } + }, + "tags": ["Projects Advisors"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/advisors/security": { + "get": { + "operationId": "getSecurityAdvisors", + "summary": "Gets project security advisors.", + "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.", + "deprecated": true, + "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/V1ProjectAdvisorsResponseDto" } + } + } + }, + "403": { "description": "" } + }, + "tags": ["Projects Advisors"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/analytics/endpoints/logs.all": { + "get": { + "operationId": "getLogs", + "summary": "Gets project's logs", + "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", + "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/V1AnalyticsResponse" } + } + } + }, + "403": { "description": "" } + }, + "tags": ["Analytics"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/database/migrations": { + "get": { + "operationId": "v1-list-migrations", + "summary": "[Beta] List applied migration versions", + "description": "Only available to selected partner OAuth apps", + "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" } + }, + "tags": ["Database"], + "security": [{ "bearer": [] }] + }, + "post": { + "operationId": "v1-apply-a-migration", + "summary": "[Beta] Apply a database migration", + "description": "Only available to selected partner OAuth apps", + "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/V1CreateMigrationBody" } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { "application/json": { "schema": { "type": "object" } } } + }, + "403": { "description": "" }, + "500": { "description": "Failed to apply database migration" } + }, + "tags": ["Database"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/database/query": { + "post": { + "operationId": "v1-run-a-query", + "summary": "[Beta] Run sql 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": "", + "content": { "application/json": { "schema": { "type": "object" } } } + }, + "403": { "description": "" }, + "500": { "description": "Failed to run sql query" } + }, + "tags": ["Database"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/database/webhooks/enable": { + "post": { + "operationId": "v1-enable-database-webhook", + "summary": "[Beta] Enables Database Webhooks on the project", + "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" } + }, + "tags": ["Database"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/database/context": { + "get": { + "operationId": "getDatabaseMetadata", + "summary": "Gets database metadata for the given project.", + "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.", + "deprecated": true, + "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/GetProjectDbMetadataResponseDto" } + } + } + }, + "403": { "description": "" } + }, + "tags": ["Database"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/functions": { + "get": { + "operationId": "v1-list-all-functions", + "summary": "List all functions", + "description": "Returns all functions you've previously added to the specified 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": { + "type": "array", + "items": { "$ref": "#/components/schemas/FunctionResponse" } + } + } + } + }, + "403": { "description": "" }, + "500": { "description": "Failed to retrieve project's functions" } + }, + "tags": ["Edge Functions"], + "security": [{ "bearer": [] }] + }, + "post": { + "operationId": "v1-create-a-function", + "summary": "Create a function", + "description": "This endpoint is deprecated - use the deploy endpoint. Creates a function and adds it to the specified project.", + "deprecated": true, + "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", + "schema": { "type": "string" } + }, + { + "name": "import_map", + "required": false, + "in": "query", + "schema": { "type": "string" } + }, + { + "name": "entrypoint_path", + "required": false, + "in": "query", + "schema": { "type": "string" } + }, + { + "name": "import_map_path", + "required": false, + "in": "query", + "schema": { "type": "string" } + } + ], + "responses": { + "201": { + "description": "", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/FunctionResponse" } } + } + }, + "403": { "description": "" }, + "500": { "description": "Failed to create project's function" } + }, + "tags": ["Edge Functions"], + "security": [{ "bearer": [] }] + }, + "put": { + "operationId": "v1-bulk-update-functions", + "summary": "Bulk update functions", + "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.", + "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": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/BulkUpdateFunctionResponse" } + } + } + }, + "403": { "description": "" }, + "500": { "description": "Failed to update functions" } + }, + "tags": ["Edge Functions"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/functions/deploy": { + "post": { + "operationId": "v1-deploy-a-function", + "summary": "Deploy a function", + "description": "A new endpoint to deploy functions. It will create if function does not exist.", + "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", "schema": { "type": "string" } } + ], + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/DeployFunctionResponse" } + } + } + }, + "403": { "description": "" }, + "500": { "description": "Failed to deploy function" } + }, + "tags": ["Edge Functions"], + "security": [{ "bearer": [] }] + } + }, + "/v1/projects/{ref}/functions/{function_slug}": { + "get": { + "operationId": "v1-get-a-function", + "summary": "Retrieve a function", + "description": "Retrieves a function with the specified slug and project.", + "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" } } } }, @@ -2267,33 +2924,33 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "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" } + "schema": { "pattern": "^[A-Za-z0-9_-]+$", "type": "string" } }, { "name": "slug", "required": false, "in": "query", - "schema": { "pattern": "/^[A-Za-z0-9_-]+$/", "type": "string" } + "schema": { "pattern": "^[A-Za-z0-9_-]+$", "type": "string" } }, { "name": "name", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "verify_jwt", "required": false, "in": "query", - "schema": { "type": "boolean" } + "schema": { "type": "string" } }, { "name": "import_map", "required": false, "in": "query", - "schema": { "type": "boolean" } + "schema": { "type": "string" } }, { "name": "entrypoint_path", @@ -2306,25 +2963,8 @@ "required": false, "in": "query", "schema": { "type": "string" } - }, - { - "name": "compute_multiplier", - "required": false, - "in": "query", - "schema": { "minimum": 1, "maximum": 4, "type": "number" } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/V1UpdateFunctionBody" } - }, - "application/vnd.denoland.eszip": { - "schema": { "$ref": "#/components/schemas/V1UpdateFunctionBody" } - } - } - }, "responses": { "200": { "description": "", @@ -2348,14 +2988,14 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "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" } + "schema": { "pattern": "^[A-Za-z0-9_-]+$", "type": "string" } } ], "responses": { @@ -2378,14 +3018,14 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "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" } + "schema": { "pattern": "^[A-Za-z0-9_-]+$", "type": "string" } } ], "responses": { @@ -2407,7 +3047,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -2439,7 +3079,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -2472,7 +3112,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -2501,9 +3141,14 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } }, - { "name": "provider_id", "required": true, "in": "path", "schema": { "type": "string" } } + { + "name": "provider_id", + "required": true, + "in": "path", + "schema": { "format": "uuid", "type": "string" } + } ], "responses": { "200": { @@ -2531,9 +3176,14 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } }, - { "name": "provider_id", "required": true, "in": "path", "schema": { "type": "string" } } + { + "name": "provider_id", + "required": true, + "in": "path", + "schema": { "format": "uuid", "type": "string" } + } ], "requestBody": { "required": true, @@ -2567,9 +3217,14 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } }, - { "name": "provider_id", "required": true, "in": "path", "schema": { "type": "string" } } + { + "name": "provider_id", + "required": true, + "in": "path", + "schema": { "format": "uuid", "type": "string" } + } ], "responses": { "200": { @@ -2599,7 +3254,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { @@ -2609,6 +3264,7 @@ "application/json": { "schema": { "$ref": "#/components/schemas/V1BackupsResponse" } } } }, + "403": { "description": "" }, "500": { "description": "Failed to get backups" } }, "tags": ["Database"], @@ -2625,7 +3281,7 @@ "required": true, "in": "path", "description": "Project ref", - "schema": { "minLength": 20, "maxLength": 20, "type": "string" } + "schema": { "minLength": 20, "maxLength": 20, "pattern": "^[a-z]+$", "type": "string" } } ], "requestBody": { @@ -2634,7 +3290,7 @@ "application/json": { "schema": { "$ref": "#/components/schemas/V1RestorePitrBody" } } } }, - "responses": { "201": { "description": "" } }, + "responses": { "201": { "description": "" }, "403": { "description": "" } }, "tags": ["Database"], "security": [{ "bearer": [] }] } @@ -2644,7 +3300,13 @@ "operationId": "v1-list-organization-members", "summary": "List members of an organization", "parameters": [ - { "name": "slug", "required": true, "in": "path", "schema": { "type": "string" } } + { + "name": "slug", + "required": true, + "in": "path", + "description": "Organization slug", + "schema": { "pattern": "^[\\w-]+$", "type": "string" } + } ], "responses": { "200": { @@ -2657,7 +3319,8 @@ } } } - } + }, + "403": { "description": "" } }, "tags": ["Organizations"], "security": [{ "bearer": [] }] @@ -2668,7 +3331,13 @@ "operationId": "v1-get-an-organization", "summary": "Gets information about the organization", "parameters": [ - { "name": "slug", "required": true, "in": "path", "schema": { "type": "string" } } + { + "name": "slug", + "required": true, + "in": "path", + "description": "Organization slug", + "schema": { "pattern": "^[\\w-]+$", "type": "string" } + } ], "responses": { "200": { @@ -2678,7 +3347,8 @@ "schema": { "$ref": "#/components/schemas/V1OrganizationSlugResponse" } } } - } + }, + "403": { "description": "" } }, "tags": ["Organizations"], "security": [{ "bearer": [] }] @@ -2711,58 +3381,59 @@ "BranchDetailResponse": { "type": "object", "properties": { - "db_port": { "type": "integer" }, "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", - "INACTIVE", "INIT_FAILED", "REMOVED", - "RESTARTING", - "UNKNOWN", + "RESTORING", "UPGRADING", "PAUSING", - "RESTORING", "RESTORE_FAILED", + "RESTARTING", "PAUSE_FAILED", "RESIZING" - ], - "type": "string" + ] }, "db_host": { "type": "string" }, + "db_port": { "type": "number" }, "db_user": { "type": "string" }, "db_pass": { "type": "string" }, "jwt_secret": { "type": "string" } }, "required": [ - "db_port", "ref", "postgres_version", "postgres_engine", "release_channel", "status", - "db_host" + "db_host", + "db_port" ] }, "UpdateBranchBody": { "type": "object", "properties": { + "branch_name": { "type": "string" }, + "git_branch": { "type": "string" }, "reset_on_push": { "type": "boolean", - "deprecated": true, - "description": "This field is deprecated and will be ignored. Use v1-reset-a-branch endpoint directly instead." + "description": "This field is deprecated and will be ignored. Use v1-reset-a-branch endpoint directly instead.", + "deprecated": true }, - "branch_name": { "type": "string" }, - "git_branch": { "type": "string" }, "persistent": { "type": "boolean" }, "status": { + "type": "string", "enum": [ "CREATING_PROJECT", "RUNNING_MIGRATIONS", @@ -2770,28 +3441,28 @@ "MIGRATIONS_FAILED", "FUNCTIONS_DEPLOYED", "FUNCTIONS_FAILED" - ], - "type": "string" + ] } } }, "BranchResponse": { "type": "object", "properties": { - "pr_number": { "type": "integer", "format": "int32" }, - "latest_check_run_id": { - "type": "number", - "deprecated": true, - "description": "This field is deprecated and will not be populated." - }, "id": { "type": "string" }, "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", @@ -2799,8 +3470,7 @@ "MIGRATIONS_FAILED", "FUNCTIONS_DEPLOYED", "FUNCTIONS_FAILED" - ], - "type": "string" + ] }, "created_at": { "type": "string" }, "updated_at": { "type": "string" } @@ -2819,12 +3489,19 @@ }, "BranchDeleteResponse": { "type": "object", - "properties": { "message": { "type": "string" } }, + "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" } }, + "properties": { + "workflow_run_id": { "type": "string" }, + "message": { "type": "string", "enum": ["ok"] } + }, "required": ["workflow_run_id", "message"] }, "V1DatabaseResponse": { @@ -2853,29 +3530,29 @@ "description": "Creation timestamp", "example": "2023-03-29T16:32:59Z" }, - "database": { "$ref": "#/components/schemas/V1DatabaseResponse" }, "status": { + "type": "string", "enum": [ + "INACTIVE", "ACTIVE_HEALTHY", "ACTIVE_UNHEALTHY", "COMING_UP", + "UNKNOWN", "GOING_DOWN", - "INACTIVE", "INIT_FAILED", "REMOVED", - "RESTARTING", - "UNKNOWN", + "RESTORING", "UPGRADING", "PAUSING", - "RESTORING", "RESTORE_FAILED", + "RESTARTING", "PAUSE_FAILED", "RESIZING" - ], - "type": "string" - } + ] + }, + "database": { "$ref": "#/components/schemas/V1DatabaseResponse" } }, - "required": ["id", "organization_id", "name", "region", "created_at", "database", "status"] + "required": ["id", "organization_id", "name", "region", "created_at", "status", "database"] }, "V1CreateProjectBodyDto": { "type": "object", @@ -2938,20 +3615,11 @@ "format": "uri", "description": "Template URL used to create the project from the CLI.", "example": "https://github.com/supabase/supabase/tree/master/examples/slack-clone/nextjs-slack-clone" - }, - "release_channel": { - "type": "string", - "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"], - "description": "Release channel. If not provided, GA will be used." - }, - "postgres_engine": { - "type": "string", - "enum": ["15", "17-oriole"], - "description": "Postgres engine version. If not provided, the latest version will be used." } }, "required": ["db_pass", "name", "organization_id", "region"], - "additionalProperties": false + "additionalProperties": false, + "hideDefinitions": ["release_channel", "postgres_engine"] }, "V1ProjectResponse": { "type": "object", @@ -2970,24 +3638,24 @@ "example": "2023-03-29T16:32:59Z" }, "status": { + "type": "string", "enum": [ + "INACTIVE", "ACTIVE_HEALTHY", "ACTIVE_UNHEALTHY", "COMING_UP", + "UNKNOWN", "GOING_DOWN", - "INACTIVE", "INIT_FAILED", "REMOVED", - "RESTARTING", - "UNKNOWN", + "RESTORING", "UPGRADING", "PAUSING", - "RESTORING", "RESTORE_FAILED", + "RESTARTING", "PAUSE_FAILED", "RESIZING" - ], - "type": "string" + ] } }, "required": ["id", "organization_id", "name", "region", "created_at", "status"] @@ -3006,25 +3674,26 @@ "OAuthTokenBody": { "type": "object", "properties": { - "grant_type": { "enum": ["authorization_code", "refresh_token"], "type": "string" }, - "client_id": { "type": "string" }, + "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" } }, - "required": ["grant_type", "client_id", "client_secret"] + "additionalProperties": false }, "OAuthTokenResponse": { "type": "object", "properties": { - "expires_in": { "type": "integer", "format": "int64" }, - "token_type": { "type": "string", "enum": ["Bearer"] }, "access_token": { "type": "string" }, - "refresh_token": { "type": "string" } + "refresh_token": { "type": "string" }, + "expires_in": { "type": "integer" }, + "token_type": { "type": "string", "enum": ["Bearer"] } }, - "required": ["expires_in", "token_type", "access_token", "refresh_token"] + "required": ["access_token", "refresh_token", "expires_in", "token_type"], + "additionalProperties": false }, "OAuthRevokeTokenBodyDto": { "type": "object", @@ -3061,7 +3730,7 @@ "type": { "type": "string", "enum": ["sql"] }, "visibility": { "type": "string", "enum": ["user", "project", "org", "public"] }, "name": { "type": "string" }, - "description": { "type": "string" }, + "description": { "type": "string", "nullable": true }, "project": { "$ref": "#/components/schemas/SnippetProject" }, "owner": { "$ref": "#/components/schemas/SnippetUser" }, "updated_by": { "$ref": "#/components/schemas/SnippetUser" } @@ -3073,6 +3742,7 @@ "type", "visibility", "name", + "description", "project", "owner", "updated_by" @@ -3104,7 +3774,7 @@ "type": { "type": "string", "enum": ["sql"] }, "visibility": { "enum": ["user", "project", "org", "public"], "type": "string" }, "name": { "type": "string" }, - "description": { "type": "string" }, + "description": { "type": "string", "nullable": true }, "project": { "$ref": "#/components/schemas/SnippetProject" }, "owner": { "$ref": "#/components/schemas/SnippetUser" }, "updated_by": { "$ref": "#/components/schemas/SnippetUser" }, @@ -3117,48 +3787,48 @@ "type", "visibility", "name", + "description", "project", "owner", "updated_by", "content" ] }, - "ApiKeySecretJWTTemplate": { - "type": "object", - "properties": { "role": { "type": "string" } }, - "required": ["role"] - }, "ApiKeyResponse": { "type": "object", "properties": { - "type": { - "nullable": true, - "type": "string", - "enum": ["publishable", "secret", "legacy"] - }, "name": { "type": "string" }, "api_key": { "type": "string" }, "id": { "type": "string", "nullable": true }, + "type": { + "type": "string", + "enum": ["publishable", "secret", "legacy"], + "nullable": true + }, "prefix": { "type": "string", "nullable": true }, "description": { "type": "string", "nullable": true }, "hash": { "type": "string", "nullable": true }, "secret_jwt_template": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/ApiKeySecretJWTTemplate" }] + "type": "object", + "properties": { "role": { "type": "string", "minLength": 1 } }, + "required": ["role"], + "nullable": true }, - "inserted_at": { "type": "string", "nullable": true }, - "updated_at": { "type": "string", "nullable": true } + "inserted_at": { "type": "string", "format": "date-time", "nullable": true }, + "updated_at": { "type": "string", "format": "date-time", "nullable": true } }, "required": ["name", "api_key"] }, "CreateApiKeyBody": { "type": "object", "properties": { - "type": { "enum": ["publishable", "secret"], "type": "string" }, + "type": { "type": "string", "enum": ["publishable", "secret"] }, "description": { "type": "string", "nullable": true }, "secret_jwt_template": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/ApiKeySecretJWTTemplate" }] + "type": "object", + "properties": { "role": { "type": "string", "minLength": 1 } }, + "required": ["role"], + "nullable": true } }, "required": ["type"] @@ -3168,127 +3838,133 @@ "properties": { "description": { "type": "string", "nullable": true }, "secret_jwt_template": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/ApiKeySecretJWTTemplate" }] + "type": "object", + "properties": { "role": { "type": "string", "minLength": 1 } }, + "required": ["role"], + "nullable": true } } }, - "DesiredInstanceSize": { - "type": "string", - "enum": [ - "micro", - "small", - "medium", - "large", - "xlarge", - "2xlarge", - "4xlarge", - "8xlarge", - "12xlarge", - "16xlarge" - ] - }, - "ReleaseChannel": { - "type": "string", - "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] - }, - "PostgresEngine": { - "type": "string", - "description": "Postgres engine version. If not provided, the latest version will be used.", - "enum": ["15", "17-oriole"] - }, "CreateBranchBody": { "type": "object", "properties": { - "desired_instance_size": { "$ref": "#/components/schemas/DesiredInstanceSize" }, - "release_channel": { "$ref": "#/components/schemas/ReleaseChannel" }, - "postgres_engine": { "$ref": "#/components/schemas/PostgresEngine" }, - "branch_name": { "type": "string" }, + "branch_name": { "type": "string", "minLength": 1 }, "git_branch": { "type": "string" }, "persistent": { "type": "boolean" }, - "region": { "type": "string" } - }, - "required": ["branch_name"] - }, - "ValidationRecord": { - "type": "object", - "properties": { "txt_name": { "type": "string" }, "txt_value": { "type": "string" } }, - "required": ["txt_name", "txt_value"] - }, - "ValidationError": { - "type": "object", - "properties": { "message": { "type": "string" } }, - "required": ["message"] - }, - "SslValidation": { - "type": "object", - "properties": { - "status": { "type": "string" }, - "validation_records": { - "type": "array", - "items": { "$ref": "#/components/schemas/ValidationRecord" } + "region": { "type": "string" }, + "desired_instance_size": { + "type": "string", + "enum": [ + "pico", + "nano", + "micro", + "small", + "medium", + "large", + "xlarge", + "2xlarge", + "4xlarge", + "8xlarge", + "12xlarge", + "16xlarge" + ] }, - "validation_errors": { - "type": "array", - "items": { "$ref": "#/components/schemas/ValidationError" } - } - }, - "required": ["status", "validation_records"] - }, - "OwnershipVerification": { - "type": "object", - "properties": { - "type": { "type": "string" }, - "name": { "type": "string" }, - "value": { "type": "string" } - }, - "required": ["type", "name", "value"] - }, - "CustomHostnameDetails": { - "type": "object", - "properties": { - "id": { "type": "string" }, - "hostname": { "type": "string" }, - "ssl": { "$ref": "#/components/schemas/SslValidation" }, - "ownership_verification": { "$ref": "#/components/schemas/OwnershipVerification" }, - "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" - ] - }, - "CfResponse": { - "type": "object", - "properties": { - "success": { "type": "boolean" }, - "errors": { "type": "array", "items": { "type": "object" } }, - "messages": { "type": "array", "items": { "type": "object" } }, - "result": { "$ref": "#/components/schemas/CustomHostnameDetails" } + "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-oriole"], + "description": "Postgres engine version. If not provided, the latest version will be used." + }, + "secrets": { "type": "object", "additionalProperties": { "type": "string" } } }, - "required": ["success", "errors", "messages", "result"] + "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" - ], - "type": "string" + ] }, "custom_hostname": { "type": "string" }, - "data": { "$ref": "#/components/schemas/CfResponse" } + "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"] }, @@ -3309,6 +3985,30 @@ "properties": { "ipv4_addresses": { "type": "array", "items": { "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"] } + }, + "required": ["entitlement", "config", "status"] + }, "NetworkRestrictionsRequest": { "type": "object", "properties": { @@ -3316,16 +4016,6 @@ "dbAllowedCidrsV6": { "type": "array", "items": { "type": "string" } } } }, - "NetworkRestrictionsResponse": { - "type": "object", - "properties": { - "entitlement": { "enum": ["disallowed", "allowed"], "type": "string" }, - "config": { "$ref": "#/components/schemas/NetworkRestrictionsRequest" }, - "old_config": { "$ref": "#/components/schemas/NetworkRestrictionsRequest" }, - "status": { "enum": ["stored", "applied"], "type": "string" } - }, - "required": ["entitlement", "config", "status"] - }, "PgsodiumConfigResponse": { "type": "object", "properties": { "root_key": { "type": "string" } }, @@ -3339,40 +4029,40 @@ "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." }, - "db_schema": { "type": "string" }, - "db_extra_search_path": { "type": "string" }, "jwt_secret": { "type": "string" } }, - "required": ["max_rows", "db_pool", "db_schema", "db_extra_search_path"] + "required": ["db_schema", "max_rows", "db_extra_search_path", "db_pool"] }, - "UpdatePostgrestConfigBody": { + "V1UpdatePostgrestConfigBody": { "type": "object", "properties": { - "max_rows": { "type": "integer", "minimum": 0, "maximum": 1000000 }, - "db_pool": { "type": "integer", "minimum": 0, "maximum": 1000 }, "db_extra_search_path": { "type": "string" }, - "db_schema": { "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." - }, - "db_schema": { "type": "string" }, - "db_extra_search_path": { "type": "string" } + } }, - "required": ["max_rows", "db_pool", "db_schema", "db_extra_search_path"] + "required": ["db_schema", "max_rows", "db_extra_search_path", "db_pool"] }, "V1ProjectRefResponse": { "type": "object", @@ -3384,40 +4074,35 @@ "required": ["id", "ref", "name"] }, "SecretResponse": { - "type": "object", - "properties": { "name": { "type": "string" }, "value": { "type": "string" } }, - "required": ["name", "value"] - }, - "CreateSecretBody": { "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 } + "name": { "type": "string" }, + "value": { "type": "string" }, + "updated_at": { "type": "string" } }, "required": ["name", "value"] }, - "SslEnforcements": { - "type": "object", - "properties": { "database": { "type": "boolean" } }, - "required": ["database"] - }, "SslEnforcementResponse": { "type": "object", "properties": { - "currentConfig": { "$ref": "#/components/schemas/SslEnforcements" }, + "currentConfig": { + "type": "object", + "properties": { "database": { "type": "boolean" } }, + "required": ["database"] + }, "appliedSuccessfully": { "type": "boolean" } }, "required": ["currentConfig", "appliedSuccessfully"] }, "SslEnforcementRequest": { "type": "object", - "properties": { "requestedConfig": { "$ref": "#/components/schemas/SslEnforcements" } }, + "properties": { + "requestedConfig": { + "type": "object", + "properties": { "database": { "type": "boolean" } }, + "required": ["database"] + } + }, "required": ["requestedConfig"] }, "TypescriptResponse": { @@ -3428,7 +4113,7 @@ "VanitySubdomainConfigResponse": { "type": "object", "properties": { - "status": { "enum": ["not-used", "custom-domain-used", "active"], "type": "string" }, + "status": { "type": "string", "enum": ["not-used", "custom-domain-used", "active"] }, "custom_domain": { "type": "string" } }, "required": ["status"] @@ -3451,99 +4136,104 @@ "UpgradeDatabaseBody": { "type": "object", "properties": { - "release_channel": { "$ref": "#/components/schemas/ReleaseChannel" }, - "target_version": { "type": "string" } + "target_version": { "type": "string" }, + "release_channel": { + "type": "string", + "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] + } }, - "required": ["release_channel", "target_version"] + "required": ["target_version"] }, "ProjectUpgradeInitiateResponse": { "type": "object", "properties": { "tracking_id": { "type": "string" } }, "required": ["tracking_id"] }, - "ProjectVersion": { - "type": "object", - "properties": { - "postgres_version": { "$ref": "#/components/schemas/PostgresEngine" }, - "release_channel": { "$ref": "#/components/schemas/ReleaseChannel" }, - "app_version": { "type": "string" } - }, - "required": ["postgres_version", "release_channel", "app_version"] - }, "ProjectUpgradeEligibilityResponse": { "type": "object", "properties": { - "current_app_version_release_channel": { "$ref": "#/components/schemas/ReleaseChannel" }, - "duration_estimate_hours": { "type": "integer" }, "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": { "$ref": "#/components/schemas/ProjectVersion" } + "items": { + "type": "object", + "properties": { + "postgres_version": { "type": "string", "enum": ["15", "17-oriole"] }, + "release_channel": { + "type": "string", + "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] + }, + "app_version": { "type": "string" } + }, + "required": ["postgres_version", "release_channel", "app_version"] + } }, "potential_breaking_changes": { "type": "array", "items": { "type": "string" } }, + "duration_estimate_hours": { "type": "number" }, "legacy_auth_custom_roles": { "type": "array", "items": { "type": "string" } }, "extension_dependent_objects": { "type": "array", "items": { "type": "string" } } }, "required": [ - "current_app_version_release_channel", - "duration_estimate_hours", "eligible", "current_app_version", + "current_app_version_release_channel", "latest_app_version", "target_upgrade_versions", "potential_breaking_changes", + "duration_estimate_hours", "legacy_auth_custom_roles", "extension_dependent_objects" ] }, - "DatabaseUpgradeStatus": { - "type": "object", - "properties": { - "target_version": { "type": "integer" }, - "status": { "enum": [0, 1, 2], "type": "integer" }, - "initiated_at": { "type": "string" }, - "latest_status_at": { "type": "string" }, - "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" - ] - } - }, - "required": ["target_version", "status", "initiated_at", "latest_status_at"] - }, "DatabaseUpgradeStatusResponse": { "type": "object", "properties": { "databaseUpgradeStatus": { - "nullable": true, - "allOf": [{ "$ref": "#/components/schemas/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"] @@ -3593,67 +4283,146 @@ "properties": { "database_identifier": { "type": "string" } }, "required": ["database_identifier"] }, - "AuthHealthResponse": { - "type": "object", - "properties": { "name": { "type": "string", "enum": ["GoTrue"] } }, - "required": ["name"] - }, - "RealtimeHealthResponse": { - "type": "object", - "properties": { "connected_cluster": { "type": "integer" } }, - "required": ["connected_cluster"] - }, "V1ServiceHealthResponse": { "type": "object", "properties": { + "name": { + "type": "string", + "enum": ["auth", "db", "pooler", "realtime", "rest", "storage"] + }, + "healthy": { "type": "boolean" }, + "status": { "type": "string", "enum": ["COMING_UP", "ACTIVE_HEALTHY", "UNHEALTHY"] }, "info": { "oneOf": [ - { "$ref": "#/components/schemas/AuthHealthResponse" }, - { "$ref": "#/components/schemas/RealtimeHealthResponse" } + { + "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"] + } ] }, - "name": { - "enum": ["auth", "db", "pooler", "realtime", "rest", "storage"], - "type": "string" - }, - "healthy": { "type": "boolean" }, - "status": { "enum": ["COMING_UP", "ACTIVE_HEALTHY", "UNHEALTHY"], "type": "string" }, "error": { "type": "string" } }, "required": ["name", "healthy", "status"] }, - "StorageFeatureImageTransformation": { + "CreateSigningKeyBody": { + "type": "object", + "properties": { + "algorithm": { "type": "string", "enum": ["EdDSA", "ES256", "RS256", "HS256"] }, + "status": { "type": "string", "enum": ["in_use", "standby"] } + }, + "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 + }, + "SigningKeyResponse": { "type": "object", - "properties": { "enabled": { "type": "boolean" } }, - "required": ["enabled"] + "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 }, - "StorageFeatures": { + "UpdateSigningKeyBody": { "type": "object", "properties": { - "imageTransformation": { - "$ref": "#/components/schemas/StorageFeatureImageTransformation" + "status": { + "type": "string", + "enum": ["in_use", "previously_used", "revoked", "standby"] } }, - "required": ["imageTransformation"] + "required": ["status"], + "additionalProperties": false }, "StorageConfigResponse": { "type": "object", "properties": { - "fileSizeLimit": { "type": "integer", "format": "int64" }, - "features": { "$ref": "#/components/schemas/StorageFeatures" } + "fileSizeLimit": { "type": "integer" }, + "features": { + "type": "object", + "properties": { + "imageTransformation": { + "type": "object", + "properties": { "enabled": { "type": "boolean" } }, + "required": ["enabled"] + }, + "s3Protocol": { + "type": "object", + "properties": { "enabled": { "type": "boolean" } }, + "required": ["enabled"] + } + }, + "required": ["imageTransformation", "s3Protocol"] + } }, "required": ["fileSizeLimit", "features"] }, "UpdateStorageConfigBody": { "type": "object", - "properties": { - "fileSizeLimit": { - "type": "integer", - "minimum": 0, - "maximum": 53687091200, - "format": "int64" - }, - "features": { "$ref": "#/components/schemas/StorageFeatures" } + "properties": { + "fileSizeLimit": { "type": "integer", "minimum": 0, "maximum": 53687091200 }, + "features": { + "type": "object", + "properties": { + "imageTransformation": { + "type": "object", + "properties": { "enabled": { "type": "boolean" } }, + "required": ["enabled"] + }, + "s3Protocol": { + "type": "object", + "properties": { "enabled": { "type": "boolean" } }, + "required": ["enabled"] + } + }, + "required": ["imageTransformation", "s3Protocol"] + } } }, "PostgresConfigResponse": { @@ -3662,6 +4431,7 @@ "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 }, @@ -3674,13 +4444,13 @@ "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" }, - "session_replication_role": { "enum": ["origin", "replica", "local"], "type": "string" } + "work_mem": { "type": "string" } } }, "UpdatePostgresConfigBody": { @@ -3689,6 +4459,7 @@ "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 }, @@ -3701,14 +4472,14 @@ "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" }, - "session_replication_role": { "enum": ["origin", "replica", "local"], "type": "string" } + "restart_database": { "type": "boolean" } } }, "V1PgbouncerConfigResponse": { @@ -3724,29 +4495,31 @@ "SupavisorConfigResponse": { "type": "object", "properties": { - "db_port": { "type": "integer" }, - "default_pool_size": { "type": "integer", "nullable": true }, - "max_client_conn": { "type": "integer", "nullable": true }, "identifier": { "type": "string" }, - "database_type": { "enum": ["PRIMARY", "READ_REPLICA"], "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" }, - "connectionString": { "type": "string" }, - "pool_mode": { "enum": ["transaction", "session"], "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": [ - "db_port", - "default_pool_size", - "max_client_conn", "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" ] }, @@ -3755,15 +4528,14 @@ "properties": { "default_pool_size": { "type": "integer", - "nullable": true, "minimum": 0, - "maximum": 1000 + "maximum": 1000, + "nullable": true }, "pool_mode": { - "enum": ["transaction", "session"], "type": "string", - "deprecated": true, - "description": "This field is deprecated and is ignored in this request" + "enum": ["transaction", "session"], + "description": "Dedicated pooler mode for the project" } } }, @@ -3771,7 +4543,7 @@ "type": "object", "properties": { "default_pool_size": { "type": "integer", "nullable": true }, - "pool_mode": { "enum": ["transaction", "session"], "type": "string" } + "pool_mode": { "type": "string" } }, "required": ["default_pool_size", "pool_mode"] }, @@ -3780,26 +4552,6 @@ "properties": { "api_max_request_duration": { "type": "integer", "nullable": true }, "db_max_pool_size": { "type": "integer", "nullable": true }, - "jwt_exp": { "type": "integer", "nullable": true }, - "mailer_otp_exp": { "type": "integer" }, - "mailer_otp_length": { "type": "integer", "nullable": true }, - "mfa_max_enrolled_factors": { "type": "integer", "nullable": true }, - "mfa_phone_otp_length": { "type": "integer" }, - "mfa_phone_max_frequency": { "type": "integer", "nullable": true }, - "password_min_length": { "type": "integer", "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 }, - "security_refresh_token_reuse_interval": { "type": "integer", "nullable": true }, - "sessions_inactivity_timeout": { "type": "integer", "nullable": true }, - "sessions_timebox": { "type": "integer", "nullable": true }, - "sms_max_frequency": { "type": "integer", "nullable": true }, - "sms_otp_exp": { "type": "integer", "nullable": true }, - "sms_otp_length": { "type": "integer" }, - "smtp_max_frequency": { "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 }, @@ -3868,6 +4620,7 @@ "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_zoom_client_id": { "type": "string", "nullable": true }, "external_zoom_enabled": { "type": "boolean", "nullable": true }, "external_zoom_secret": { "type": "string", "nullable": true }, @@ -3886,8 +4639,11 @@ "hook_send_email_enabled": { "type": "boolean", "nullable": true }, "hook_send_email_uri": { "type": "string", "nullable": true }, "hook_send_email_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 }, @@ -3901,15 +4657,26 @@ "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 }, "password_hibp_enabled": { "type": "boolean", "nullable": true }, + "password_min_length": { "type": "integer", "nullable": true }, "password_required_characters": { "type": "string", "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 }, @@ -3918,16 +4685,22 @@ "security_captcha_provider": { "type": "string", "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", "nullable": true }, "sms_template": { "type": "string", "nullable": true }, "sms_test_otp": { "type": "string", "nullable": true }, @@ -3946,6 +4719,7 @@ "sms_vonage_from": { "type": "string", "nullable": true }, "smtp_admin_email": { "type": "string", "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 }, @@ -3955,26 +4729,6 @@ "required": [ "api_max_request_duration", "db_max_pool_size", - "jwt_exp", - "mailer_otp_exp", - "mailer_otp_length", - "mfa_max_enrolled_factors", - "mfa_phone_otp_length", - "mfa_phone_max_frequency", - "password_min_length", - "rate_limit_anonymous_users", - "rate_limit_email_sent", - "rate_limit_sms_sent", - "rate_limit_token_refresh", - "rate_limit_verify", - "rate_limit_otp", - "security_refresh_token_reuse_interval", - "sessions_inactivity_timeout", - "sessions_timebox", - "sms_max_frequency", - "sms_otp_exp", - "sms_otp_length", - "smtp_max_frequency", "disable_signup", "external_anonymous_users_enabled", "external_apple_additional_client_ids", @@ -4043,6 +4797,7 @@ "external_workos_enabled", "external_workos_secret", "external_workos_url", + "external_web3_solana_enabled", "external_zoom_client_id", "external_zoom_enabled", "external_zoom_secret", @@ -4061,8 +4816,11 @@ "hook_send_email_enabled", "hook_send_email_uri", "hook_send_email_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", @@ -4076,15 +4834,26 @@ "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", "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", @@ -4093,13 +4862,19 @@ "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", @@ -4118,6 +4893,7 @@ "sms_vonage_from", "smtp_admin_email", "smtp_host", + "smtp_max_frequency", "smtp_pass", "smtp_port", "smtp_sender_name", @@ -4128,190 +4904,280 @@ "UpdateAuthConfigBody": { "type": "object", "properties": { - "jwt_exp": { "type": "integer", "minimum": 0, "maximum": 604800 }, - "smtp_max_frequency": { "type": "integer", "minimum": 0, "maximum": 32767 }, - "mfa_max_enrolled_factors": { "type": "integer", "minimum": 0, "maximum": 2147483647 }, - "sessions_timebox": { "type": "integer", "minimum": 0 }, - "sessions_inactivity_timeout": { "type": "integer", "minimum": 0 }, - "rate_limit_anonymous_users": { "type": "integer", "minimum": 1, "maximum": 2147483647 }, - "rate_limit_email_sent": { "type": "integer", "minimum": 1, "maximum": 2147483647 }, - "rate_limit_sms_sent": { "type": "integer", "minimum": 1, "maximum": 2147483647 }, - "rate_limit_verify": { "type": "integer", "minimum": 1, "maximum": 2147483647 }, - "rate_limit_token_refresh": { "type": "integer", "minimum": 1, "maximum": 2147483647 }, - "rate_limit_otp": { "type": "integer", "minimum": 1, "maximum": 2147483647 }, - "password_min_length": { "type": "integer", "minimum": 6, "maximum": 32767 }, + "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", "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 - }, - "mailer_otp_exp": { "type": "integer", "minimum": 0, "maximum": 2147483647 }, - "mailer_otp_length": { "type": "integer", "minimum": 6, "maximum": 10 }, - "sms_max_frequency": { "type": "integer", "minimum": 0, "maximum": 32767 }, - "sms_otp_exp": { "type": "integer", "minimum": 0, "maximum": 2147483647 }, - "sms_otp_length": { "type": "integer", "minimum": 0, "maximum": 32767 }, - "db_max_pool_size": { "type": "integer" }, - "api_max_request_duration": { "type": "integer" }, - "mfa_phone_max_frequency": { "type": "integer", "minimum": 0, "maximum": 32767 }, - "mfa_phone_otp_length": { "type": "integer", "minimum": 0, "maximum": 32767 }, - "site_url": { "type": "string", "pattern": "/^[^,]+$/" }, - "disable_signup": { "type": "boolean" }, - "smtp_admin_email": { "type": "string" }, - "smtp_host": { "type": "string" }, - "smtp_port": { "type": "string" }, - "smtp_user": { "type": "string" }, - "smtp_pass": { "type": "string" }, - "smtp_sender_name": { "type": "string" }, - "mailer_allow_unverified_email_sign_ins": { "type": "boolean" }, - "mailer_autoconfirm": { "type": "boolean" }, - "mailer_subjects_invite": { "type": "string" }, - "mailer_subjects_confirmation": { "type": "string" }, - "mailer_subjects_recovery": { "type": "string" }, - "mailer_subjects_email_change": { "type": "string" }, - "mailer_subjects_magic_link": { "type": "string" }, - "mailer_subjects_reauthentication": { "type": "string" }, - "mailer_templates_invite_content": { "type": "string" }, - "mailer_templates_confirmation_content": { "type": "string" }, - "mailer_templates_recovery_content": { "type": "string" }, - "mailer_templates_email_change_content": { "type": "string" }, - "mailer_templates_magic_link_content": { "type": "string" }, - "mailer_templates_reauthentication_content": { "type": "string" }, - "uri_allow_list": { "type": "string" }, - "external_anonymous_users_enabled": { "type": "boolean" }, - "external_email_enabled": { "type": "boolean" }, - "external_phone_enabled": { "type": "boolean" }, - "saml_enabled": { "type": "boolean" }, - "saml_external_url": { "type": "string", "pattern": "/^[^,]+$/" }, - "security_captcha_enabled": { "type": "boolean" }, - "security_captcha_provider": { "type": "string" }, - "security_captcha_secret": { "type": "string" }, - "sessions_single_per_user": { "type": "boolean" }, - "sessions_tags": { - "type": "string", - "pattern": "/^\\s*([a-z0-9_-]+(\\s*,+\\s*)?)*\\s*$/i" + "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 }, + "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_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 }, - "mailer_secure_email_change_enabled": { "type": "boolean" }, - "refresh_token_rotation_enabled": { "type": "boolean" }, - "password_hibp_enabled": { "type": "boolean" }, - "password_required_characters": { - "type": "string", - "enum": [ - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789", - "abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789", - "abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789:!@#$%^&*()_+-=[]{};'\\\\:\"|<>?,./`~", - "" - ] + "mfa_phone_otp_length": { + "type": "integer", + "minimum": 0, + "maximum": 32767, + "nullable": true }, - "security_manual_linking_enabled": { "type": "boolean" }, - "security_update_password_require_reauthentication": { "type": "boolean" }, - "sms_autoconfirm": { "type": "boolean" }, - "sms_provider": { "type": "string" }, - "sms_messagebird_access_key": { "type": "string" }, - "sms_messagebird_originator": { "type": "string" }, - "sms_test_otp": { "type": "string", "pattern": "/^([0-9]{1,15}=[0-9]+,?)*$/" }, - "sms_test_otp_valid_until": { "type": "string" }, - "sms_textlocal_api_key": { "type": "string" }, - "sms_textlocal_sender": { "type": "string" }, - "sms_twilio_account_sid": { "type": "string" }, - "sms_twilio_auth_token": { "type": "string" }, - "sms_twilio_content_sid": { "type": "string" }, - "sms_twilio_message_service_sid": { "type": "string" }, - "sms_twilio_verify_account_sid": { "type": "string" }, - "sms_twilio_verify_auth_token": { "type": "string" }, - "sms_twilio_verify_message_service_sid": { "type": "string" }, - "sms_vonage_api_key": { "type": "string" }, - "sms_vonage_api_secret": { "type": "string" }, - "sms_vonage_from": { "type": "string" }, - "sms_template": { "type": "string" }, - "hook_mfa_verification_attempt_enabled": { "type": "boolean" }, - "hook_mfa_verification_attempt_uri": { "type": "string" }, - "hook_mfa_verification_attempt_secrets": { "type": "string" }, - "hook_password_verification_attempt_enabled": { "type": "boolean" }, - "hook_password_verification_attempt_uri": { "type": "string" }, - "hook_password_verification_attempt_secrets": { "type": "string" }, - "hook_custom_access_token_enabled": { "type": "boolean" }, - "hook_custom_access_token_uri": { "type": "string" }, - "hook_custom_access_token_secrets": { "type": "string" }, - "hook_send_sms_enabled": { "type": "boolean" }, - "hook_send_sms_uri": { "type": "string" }, - "hook_send_sms_secrets": { "type": "string" }, - "hook_send_email_enabled": { "type": "boolean" }, - "hook_send_email_uri": { "type": "string" }, - "hook_send_email_secrets": { "type": "string" }, - "external_apple_enabled": { "type": "boolean" }, - "external_apple_client_id": { "type": "string" }, - "external_apple_secret": { "type": "string" }, - "external_apple_additional_client_ids": { "type": "string" }, - "external_azure_enabled": { "type": "boolean" }, - "external_azure_client_id": { "type": "string" }, - "external_azure_secret": { "type": "string" }, - "external_azure_url": { "type": "string" }, - "external_bitbucket_enabled": { "type": "boolean" }, - "external_bitbucket_client_id": { "type": "string" }, - "external_bitbucket_secret": { "type": "string" }, - "external_discord_enabled": { "type": "boolean" }, - "external_discord_client_id": { "type": "string" }, - "external_discord_secret": { "type": "string" }, - "external_facebook_enabled": { "type": "boolean" }, - "external_facebook_client_id": { "type": "string" }, - "external_facebook_secret": { "type": "string" }, - "external_figma_enabled": { "type": "boolean" }, - "external_figma_client_id": { "type": "string" }, - "external_figma_secret": { "type": "string" }, - "external_github_enabled": { "type": "boolean" }, - "external_github_client_id": { "type": "string" }, - "external_github_secret": { "type": "string" }, - "external_gitlab_enabled": { "type": "boolean" }, - "external_gitlab_client_id": { "type": "string" }, - "external_gitlab_secret": { "type": "string" }, - "external_gitlab_url": { "type": "string" }, - "external_google_enabled": { "type": "boolean" }, - "external_google_client_id": { "type": "string" }, - "external_google_secret": { "type": "string" }, - "external_google_additional_client_ids": { "type": "string" }, - "external_google_skip_nonce_check": { "type": "boolean" }, - "external_kakao_enabled": { "type": "boolean" }, - "external_kakao_client_id": { "type": "string" }, - "external_kakao_secret": { "type": "string" }, - "external_keycloak_enabled": { "type": "boolean" }, - "external_keycloak_client_id": { "type": "string" }, - "external_keycloak_secret": { "type": "string" }, - "external_keycloak_url": { "type": "string" }, - "external_linkedin_oidc_enabled": { "type": "boolean" }, - "external_linkedin_oidc_client_id": { "type": "string" }, - "external_linkedin_oidc_secret": { "type": "string" }, - "external_slack_oidc_enabled": { "type": "boolean" }, - "external_slack_oidc_client_id": { "type": "string" }, - "external_slack_oidc_secret": { "type": "string" }, - "external_notion_enabled": { "type": "boolean" }, - "external_notion_client_id": { "type": "string" }, - "external_notion_secret": { "type": "string" }, - "external_slack_enabled": { "type": "boolean" }, - "external_slack_client_id": { "type": "string" }, - "external_slack_secret": { "type": "string" }, - "external_spotify_enabled": { "type": "boolean" }, - "external_spotify_client_id": { "type": "string" }, - "external_spotify_secret": { "type": "string" }, - "external_twitch_enabled": { "type": "boolean" }, - "external_twitch_client_id": { "type": "string" }, - "external_twitch_secret": { "type": "string" }, - "external_twitter_enabled": { "type": "boolean" }, - "external_twitter_client_id": { "type": "string" }, - "external_twitter_secret": { "type": "string" }, - "external_workos_enabled": { "type": "boolean" }, - "external_workos_client_id": { "type": "string" }, - "external_workos_secret": { "type": "string" }, - "external_workos_url": { "type": "string" }, - "external_zoom_enabled": { "type": "boolean" }, - "external_zoom_client_id": { "type": "string" }, - "external_zoom_secret": { "type": "string" }, - "mfa_totp_enroll_enabled": { "type": "boolean" }, - "mfa_totp_verify_enabled": { "type": "boolean" }, - "mfa_web_authn_enroll_enabled": { "type": "boolean" }, - "mfa_web_authn_verify_enabled": { "type": "boolean" }, - "mfa_phone_enroll_enabled": { "type": "boolean" }, - "mfa_phone_verify_enabled": { "type": "boolean" }, - "mfa_phone_template": { "type": "string" } + "mfa_phone_template": { "type": "string", "nullable": true } } }, "CreateThirdPartyAuthBody": { @@ -4319,84 +5185,470 @@ "properties": { "oidc_issuer_url": { "type": "string" }, "jwks_url": { "type": "string" }, - "custom_jwks": { "type": "object" } + "custom_jwks": {} } }, "ThirdPartyAuth": { "type": "object", "properties": { - "id": { "type": "string" }, + "id": { "type": "string", "format": "uuid" }, "type": { "type": "string" }, "oidc_issuer_url": { "type": "string", "nullable": true }, "jwks_url": { "type": "string", "nullable": true }, - "custom_jwks": { "type": "object", "nullable": true }, - "resolved_jwks": { "type": "object", "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"] }, + "ProjectAvailableRestoreVersion": { + "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"] + }, + "GetProjectAvailableRestoreVersionsResponse": { + "type": "object", + "properties": { + "available_versions": { + "type": "array", + "items": { "$ref": "#/components/schemas/ProjectAvailableRestoreVersion" } + } + }, + "required": ["available_versions"] + }, + "ListProjectAddonsResponseDto": { + "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" + ] + }, + { "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" + ] + }, + { "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"] + }, + "ApplyProjectAddonBodyDto": { + "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" + ] + }, + { "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"] + }, + "V1ProjectAdvisorsResponseDto": { + "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" + ] + }, + "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"] + }, + "V1AnalyticsResponse": { + "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"] + } + ] + } + } + }, + "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"] + }, "V1RunQueryBody": { "type": "object", - "properties": { "query": { "type": "string" } }, + "properties": { + "query": { "type": "string", "minLength": 1 }, + "read_only": { "type": "boolean" } + }, "required": ["query"] }, - "V1CreateFunctionBody": { + "GetProjectDbMetadataResponseDto": { "type": "object", "properties": { - "slug": { "type": "string", "pattern": "/^[A-Za-z0-9_-]+$/" }, - "name": { "type": "string" }, - "body": { "type": "string" }, - "verify_jwt": { "type": "boolean" }, - "compute_multiplier": { "type": "number", "minimum": 1, "maximum": 4 } + "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": ["slug", "name", "body"] + "required": ["databases"] }, "FunctionResponse": { "type": "object", "properties": { - "version": { "type": "integer" }, - "created_at": { "type": "integer", "format": "int64" }, - "updated_at": { "type": "integer", "format": "int64" }, "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, - "status": { "enum": ["ACTIVE", "REMOVED", "THROTTLED"], "type": "string" }, + "status": { "type": "string", "enum": ["ACTIVE", "REMOVED", "THROTTLED"] }, + "version": { "type": "integer" }, + "created_at": { "type": "integer" }, + "updated_at": { "type": "integer" }, "verify_jwt": { "type": "boolean" }, "import_map": { "type": "boolean" }, "entrypoint_path": { "type": "string" }, - "import_map_path": { "type": "string" }, - "compute_multiplier": { "type": "number" } + "import_map_path": { "type": "string" } }, - "required": ["version", "created_at", "updated_at", "id", "slug", "name", "status"] + "required": ["id", "slug", "name", "status", "version", "created_at", "updated_at"] }, - "FunctionSlugResponse": { + "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" }, + "updated_at": { "type": "integer" }, + "verify_jwt": { "type": "boolean" }, + "import_map": { "type": "boolean" }, + "entrypoint_path": { "type": "string" }, + "import_map_path": { "type": "string" } + }, + "required": ["id", "slug", "name", "status", "version", "created_at", "updated_at"] + } + } + }, + "required": ["functions"] + }, + "DeployFunctionResponse": { "type": "object", "properties": { - "version": { "type": "integer" }, - "created_at": { "type": "integer", "format": "int64" }, - "updated_at": { "type": "integer", "format": "int64" }, "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, - "status": { "enum": ["ACTIVE", "REMOVED", "THROTTLED"], "type": "string" }, + "status": { "type": "string", "enum": ["ACTIVE", "REMOVED", "THROTTLED"] }, + "version": { "type": "integer" }, + "created_at": { "type": "integer" }, + "updated_at": { "type": "integer" }, "verify_jwt": { "type": "boolean" }, "import_map": { "type": "boolean" }, "entrypoint_path": { "type": "string" }, - "import_map_path": { "type": "string" }, - "compute_multiplier": { "type": "number" } + "import_map_path": { "type": "string" } }, - "required": ["version", "created_at", "updated_at", "id", "slug", "name", "status"] + "required": ["id", "slug", "name", "status", "version"] }, - "V1UpdateFunctionBody": { + "FunctionSlugResponse": { "type": "object", "properties": { + "id": { "type": "string" }, + "slug": { "type": "string" }, "name": { "type": "string" }, - "body": { "type": "string" }, + "status": { "type": "string", "enum": ["ACTIVE", "REMOVED", "THROTTLED"] }, + "version": { "type": "integer" }, + "created_at": { "type": "integer" }, + "updated_at": { "type": "integer" }, "verify_jwt": { "type": "boolean" }, - "compute_multiplier": { "type": "number", "minimum": 1, "maximum": 4 } - } + "import_map": { "type": "boolean" }, + "entrypoint_path": { "type": "string" }, + "import_map_path": { "type": "string" } + }, + "required": ["id", "slug", "name", "status", "version", "created_at", "updated_at"] }, "V1StorageBucketResponse": { "type": "object", @@ -4410,32 +5662,6 @@ }, "required": ["id", "name", "owner", "created_at", "updated_at", "public"] }, - "AttributeValue": { - "type": "object", - "properties": { - "default": { - "oneOf": [ - { "type": "object" }, - { "type": "number" }, - { "type": "string" }, - { "type": "boolean" } - ] - }, - "name": { "type": "string" }, - "names": { "type": "array", "items": { "type": "string" } }, - "array": { "type": "boolean" } - } - }, - "AttributeMapping": { - "type": "object", - "properties": { - "keys": { - "type": "object", - "additionalProperties": { "$ref": "#/components/schemas/AttributeValue" } - } - }, - "required": ["keys"] - }, "CreateProviderBody": { "type": "object", "properties": { @@ -4447,48 +5673,86 @@ "metadata_xml": { "type": "string" }, "metadata_url": { "type": "string" }, "domains": { "type": "array", "items": { "type": "string" } }, - "attribute_mapping": { "$ref": "#/components/schemas/AttributeMapping" } + "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"] + } }, "required": ["type"] }, - "SamlDescriptor": { - "type": "object", - "properties": { - "id": { "type": "string" }, - "entity_id": { "type": "string" }, - "metadata_url": { "type": "string" }, - "metadata_xml": { "type": "string" }, - "attribute_mapping": { "$ref": "#/components/schemas/AttributeMapping" } - }, - "required": ["id", "entity_id"] - }, - "Domain": { - "type": "object", - "properties": { - "id": { "type": "string" }, - "domain": { "type": "string" }, - "created_at": { "type": "string" }, - "updated_at": { "type": "string" } - }, - "required": ["id"] - }, "CreateProviderResponse": { "type": "object", "properties": { "id": { "type": "string" }, - "saml": { "$ref": "#/components/schemas/SamlDescriptor" }, - "domains": { "type": "array", "items": { "$ref": "#/components/schemas/Domain" } }, - "created_at": { "type": "string" }, - "updated_at": { "type": "string" } - }, - "required": ["id"] - }, - "Provider": { - "type": "object", - "properties": { - "id": { "type": "string" }, - "saml": { "$ref": "#/components/schemas/SamlDescriptor" }, - "domains": { "type": "array", "items": { "$ref": "#/components/schemas/Domain" } }, + "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"] + } + }, + "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" } }, @@ -4497,7 +5761,66 @@ "ListProvidersResponse": { "type": "object", "properties": { - "items": { "type": "array", "items": { "$ref": "#/components/schemas/Provider" } } + "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"] + } + }, + "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"] }, @@ -4505,8 +5828,54 @@ "type": "object", "properties": { "id": { "type": "string" }, - "saml": { "$ref": "#/components/schemas/SamlDescriptor" }, - "domains": { "type": "array", "items": { "$ref": "#/components/schemas/Domain" } }, + "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"] + } + }, + "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" } }, @@ -4518,15 +5887,85 @@ "metadata_xml": { "type": "string" }, "metadata_url": { "type": "string" }, "domains": { "type": "array", "items": { "type": "string" } }, - "attribute_mapping": { "$ref": "#/components/schemas/AttributeMapping" } + "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"] + } } }, "UpdateProviderResponse": { "type": "object", "properties": { "id": { "type": "string" }, - "saml": { "$ref": "#/components/schemas/SamlDescriptor" }, - "domains": { "type": "array", "items": { "$ref": "#/components/schemas/Domain" } }, + "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"] + } + }, + "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" } }, @@ -4536,8 +5975,54 @@ "type": "object", "properties": { "id": { "type": "string" }, - "saml": { "$ref": "#/components/schemas/SamlDescriptor" }, - "domains": { "type": "array", "items": { "$ref": "#/components/schemas/Domain" } }, + "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"] + } + }, + "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" } }, @@ -4592,6 +6077,10 @@ "required": ["user_id", "user_name", "role_name", "mfa_enabled"] }, "BillingPlanId": { "type": "string", "enum": ["free", "pro", "team", "enterprise"] }, + "ReleaseChannel": { + "type": "string", + "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] + }, "V1OrganizationSlugResponse": { "type": "object", "properties": { diff --git a/apps/docs/spec/transforms/api_v1_openapi_deparsed.json b/apps/docs/spec/transforms/api_v1_openapi_deparsed.json index 50b2c52dae666..cbbdd6b2b3a6b 100644 --- a/apps/docs/spec/transforms/api_v1_openapi_deparsed.json +++ b/apps/docs/spec/transforms/api_v1_openapi_deparsed.json @@ -66,6 +66,7 @@ "in": "path", "description": "Branch ID", "schema": { + "format": "uuid", "type": "string" } } @@ -78,9 +79,6 @@ "schema": { "type": "object", "properties": { - "db_port": { - "type": "integer" - }, "ref": { "type": "string" }, @@ -94,28 +92,31 @@ "type": "string" }, "status": { + "type": "string", "enum": [ + "INACTIVE", "ACTIVE_HEALTHY", "ACTIVE_UNHEALTHY", "COMING_UP", + "UNKNOWN", "GOING_DOWN", - "INACTIVE", "INIT_FAILED", "REMOVED", - "RESTARTING", - "UNKNOWN", + "RESTORING", "UPGRADING", "PAUSING", - "RESTORING", "RESTORE_FAILED", + "RESTARTING", "PAUSE_FAILED", "RESIZING" - ], - "type": "string" + ] }, "db_host": { "type": "string" }, + "db_port": { + "type": "number" + }, "db_user": { "type": "string" }, @@ -127,13 +128,13 @@ } }, "required": [ - "db_port", "ref", "postgres_version", "postgres_engine", "release_channel", "status", - "db_host" + "db_host", + "db_port" ] } } @@ -161,6 +162,7 @@ "in": "path", "description": "Branch ID", "schema": { + "format": "uuid", "type": "string" } } @@ -172,21 +174,22 @@ "schema": { "type": "object", "properties": { - "reset_on_push": { - "type": "boolean", - "deprecated": true, - "description": "This field is deprecated and will be ignored. Use v1-reset-a-branch endpoint directly instead." - }, "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", @@ -194,8 +197,7 @@ "MIGRATIONS_FAILED", "FUNCTIONS_DEPLOYED", "FUNCTIONS_FAILED" - ], - "type": "string" + ] } } } @@ -210,15 +212,6 @@ "schema": { "type": "object", "properties": { - "pr_number": { - "type": "integer", - "format": "int32" - }, - "latest_check_run_id": { - "type": "number", - "deprecated": true, - "description": "This field is deprecated and will not be populated." - }, "id": { "type": "string" }, @@ -237,10 +230,20 @@ "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", @@ -248,8 +251,7 @@ "MIGRATIONS_FAILED", "FUNCTIONS_DEPLOYED", "FUNCTIONS_FAILED" - ], - "type": "string" + ] }, "created_at": { "type": "string" @@ -295,6 +297,7 @@ "in": "path", "description": "Branch ID", "schema": { + "format": "uuid", "type": "string" } } @@ -308,7 +311,8 @@ "type": "object", "properties": { "message": { - "type": "string" + "type": "string", + "enum": ["ok"] } }, "required": ["message"] @@ -340,10 +344,26 @@ "in": "path", "description": "Branch ID", "schema": { + "format": "uuid", "type": "string" } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "migration_version": { + "type": "string" + } + } + } + } + } + }, "responses": { "201": { "description": "", @@ -356,7 +376,8 @@ "type": "string" }, "message": { - "type": "string" + "type": "string", + "enum": ["ok"] } }, "required": ["workflow_run_id", "message"] @@ -376,6 +397,71 @@ ] } }, + "/v1/branches/{branch_id}/merge": { + "post": { + "operationId": "v1-merge-a-branch", + "summary": "Merges a database branch", + "description": "Merges the specified database branch", + "parameters": [ + { + "name": "branch_id", + "required": true, + "in": "path", + "description": "Branch ID", + "schema": { + "format": "uuid", + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "migration_version": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "workflow_run_id": { + "type": "string" + }, + "message": { + "type": "string", + "enum": ["ok"] + } + }, + "required": ["workflow_run_id", "message"] + } + } + } + }, + "500": { + "description": "Failed to merge database branch" + } + }, + "tags": ["Environments"], + "security": [ + { + "bearer": [] + } + ] + } + }, "/v1/branches/{branch_id}/reset": { "post": { "operationId": "v1-reset-a-branch", @@ -388,10 +474,26 @@ "in": "path", "description": "Branch ID", "schema": { + "format": "uuid", "type": "string" } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "migration_version": { + "type": "string" + } + } + } + } + } + }, "responses": { "201": { "description": "", @@ -404,7 +506,8 @@ "type": "string" }, "message": { - "type": "string" + "type": "string", + "enum": ["ok"] } }, "required": ["workflow_run_id", "message"] @@ -462,6 +565,26 @@ "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": { @@ -483,26 +606,6 @@ } }, "required": ["host", "version", "postgres_engine", "release_channel"] - }, - "status": { - "enum": [ - "ACTIVE_HEALTHY", - "ACTIVE_UNHEALTHY", - "COMING_UP", - "GOING_DOWN", - "INACTIVE", - "INIT_FAILED", - "REMOVED", - "RESTARTING", - "UNKNOWN", - "UPGRADING", - "PAUSING", - "RESTORING", - "RESTORE_FAILED", - "PAUSE_FAILED", - "RESIZING" - ], - "type": "string" } }, "required": [ @@ -511,8 +614,8 @@ "name", "region", "created_at", - "database", - "status" + "status", + "database" ] } } @@ -605,20 +708,11 @@ "format": "uri", "description": "Template URL used to create the project from the CLI.", "example": "https://github.com/supabase/supabase/tree/master/examples/slack-clone/nextjs-slack-clone" - }, - "release_channel": { - "type": "string", - "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"], - "description": "Release channel. If not provided, GA will be used." - }, - "postgres_engine": { - "type": "string", - "enum": ["15", "17-oriole"], - "description": "Postgres engine version. If not provided, the latest version will be used." } }, "required": ["db_pass", "name", "organization_id", "region"], - "additionalProperties": false + "additionalProperties": false, + "hideDefinitions": ["release_channel", "postgres_engine"] } } } @@ -654,24 +748,24 @@ "example": "2023-03-29T16:32:59Z" }, "status": { + "type": "string", "enum": [ + "INACTIVE", "ACTIVE_HEALTHY", "ACTIVE_UNHEALTHY", "COMING_UP", + "UNKNOWN", "GOING_DOWN", - "INACTIVE", "INIT_FAILED", "REMOVED", - "RESTARTING", - "UNKNOWN", + "RESTORING", "UPGRADING", "PAUSING", - "RESTORING", "RESTORE_FAILED", + "RESTARTING", "PAUSE_FAILED", "RESIZING" - ], - "type": "string" + ] } }, "required": ["id", "organization_id", "name", "region", "created_at", "status"] @@ -791,6 +885,7 @@ "required": true, "in": "query", "schema": { + "format": "uuid", "type": "string" } }, @@ -879,11 +974,12 @@ "type": "object", "properties": { "grant_type": { - "enum": ["authorization_code", "refresh_token"], - "type": "string" + "type": "string", + "enum": ["authorization_code", "refresh_token"] }, "client_id": { - "type": "string" + "type": "string", + "format": "uuid" }, "client_secret": { "type": "string" @@ -901,7 +997,7 @@ "type": "string" } }, - "required": ["grant_type", "client_id", "client_secret"] + "additionalProperties": false } } } @@ -914,22 +1010,22 @@ "schema": { "type": "object", "properties": { - "expires_in": { - "type": "integer", - "format": "int64" - }, - "token_type": { - "type": "string", - "enum": ["Bearer"] - }, "access_token": { "type": "string" }, "refresh_token": { "type": "string" + }, + "expires_in": { + "type": "integer" + }, + "token_type": { + "type": "string", + "enum": ["Bearer"] } }, - "required": ["expires_in", "token_type", "access_token", "refresh_token"] + "required": ["access_token", "refresh_token", "expires_in", "token_type"], + "additionalProperties": false } } } @@ -990,6 +1086,18 @@ "operationId": "v1-list-all-snippets", "summary": "Lists SQL snippets for the logged in user", "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, @@ -1025,14 +1133,6 @@ "enum": ["asc", "desc"], "type": "string" } - }, - { - "name": "project_ref", - "required": false, - "in": "query", - "schema": { - "type": "string" - } } ], "responses": { @@ -1069,7 +1169,8 @@ "type": "string" }, "description": { - "type": "string" + "type": "string", + "nullable": true }, "project": { "type": "object", @@ -1118,6 +1219,7 @@ "type", "visibility", "name", + "description", "project", "owner", "updated_by" @@ -1189,7 +1291,8 @@ "type": "string" }, "description": { - "type": "string" + "type": "string", + "nullable": true }, "project": { "type": "object", @@ -1253,6 +1356,7 @@ "type", "visibility", "name", + "description", "project", "owner", "updated_by", @@ -1287,15 +1391,16 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, { "name": "reveal", - "required": true, + "required": false, "in": "query", "schema": { - "type": "boolean" + "type": "string" } } ], @@ -1309,11 +1414,6 @@ "items": { "type": "object", "properties": { - "type": { - "nullable": true, - "type": "string", - "enum": ["publishable", "secret", "legacy"] - }, "name": { "type": "string" }, @@ -1324,6 +1424,11 @@ "type": "string", "nullable": true }, + "type": { + "type": "string", + "enum": ["publishable", "secret", "legacy"], + "nullable": true + }, "prefix": { "type": "string", "nullable": true @@ -1337,25 +1442,24 @@ "nullable": true }, "secret_jwt_template": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "role": { - "type": "string" - } - }, - "required": ["role"] + "type": "object", + "properties": { + "role": { + "type": "string", + "minLength": 1 } - ] + }, + "required": ["role"], + "nullable": true }, "inserted_at": { "type": "string", + "format": "date-time", "nullable": true }, "updated_at": { "type": "string", + "format": "date-time", "nullable": true } }, @@ -1364,6 +1468,9 @@ } } } + }, + "403": { + "description": "" } }, "tags": ["Secrets"], @@ -1385,15 +1492,16 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, { "name": "reveal", - "required": true, + "required": false, "in": "query", "schema": { - "type": "boolean" + "type": "string" } } ], @@ -1405,26 +1513,23 @@ "type": "object", "properties": { "type": { - "enum": ["publishable", "secret"], - "type": "string" + "type": "string", + "enum": ["publishable", "secret"] }, "description": { "type": "string", "nullable": true }, "secret_jwt_template": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "role": { - "type": "string" - } - }, - "required": ["role"] + "type": "object", + "properties": { + "role": { + "type": "string", + "minLength": 1 } - ] + }, + "required": ["role"], + "nullable": true } }, "required": ["type"] @@ -1440,11 +1545,6 @@ "schema": { "type": "object", "properties": { - "type": { - "nullable": true, - "type": "string", - "enum": ["publishable", "secret", "legacy"] - }, "name": { "type": "string" }, @@ -1455,6 +1555,11 @@ "type": "string", "nullable": true }, + "type": { + "type": "string", + "enum": ["publishable", "secret", "legacy"], + "nullable": true + }, "prefix": { "type": "string", "nullable": true @@ -1468,25 +1573,24 @@ "nullable": true }, "secret_jwt_template": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "role": { - "type": "string" - } - }, - "required": ["role"] + "type": "object", + "properties": { + "role": { + "type": "string", + "minLength": 1 } - ] + }, + "required": ["role"], + "nullable": true }, "inserted_at": { "type": "string", + "format": "date-time", "nullable": true }, "updated_at": { "type": "string", + "format": "date-time", "nullable": true } }, @@ -1494,6 +1598,9 @@ } } } + }, + "403": { + "description": "" } }, "tags": ["Secrets"], @@ -1517,6 +1624,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, @@ -1525,15 +1633,16 @@ "required": true, "in": "path", "schema": { + "format": "uuid", "type": "string" } }, { "name": "reveal", - "required": true, + "required": false, "in": "query", "schema": { - "type": "boolean" + "type": "string" } } ], @@ -1549,18 +1658,15 @@ "nullable": true }, "secret_jwt_template": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "role": { - "type": "string" - } - }, - "required": ["role"] + "type": "object", + "properties": { + "role": { + "type": "string", + "minLength": 1 } - ] + }, + "required": ["role"], + "nullable": true } } } @@ -1575,11 +1681,6 @@ "schema": { "type": "object", "properties": { - "type": { - "nullable": true, - "type": "string", - "enum": ["publishable", "secret", "legacy"] - }, "name": { "type": "string" }, @@ -1590,6 +1691,11 @@ "type": "string", "nullable": true }, + "type": { + "type": "string", + "enum": ["publishable", "secret", "legacy"], + "nullable": true + }, "prefix": { "type": "string", "nullable": true @@ -1603,25 +1709,24 @@ "nullable": true }, "secret_jwt_template": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "role": { - "type": "string" - } - }, - "required": ["role"] + "type": "object", + "properties": { + "role": { + "type": "string", + "minLength": 1 } - ] + }, + "required": ["role"], + "nullable": true }, "inserted_at": { "type": "string", + "format": "date-time", "nullable": true }, "updated_at": { "type": "string", + "format": "date-time", "nullable": true } }, @@ -1629,6 +1734,9 @@ } } } + }, + "403": { + "description": "" } }, "tags": ["Secrets"], @@ -1650,6 +1758,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, @@ -1658,15 +1767,16 @@ "required": true, "in": "path", "schema": { + "format": "uuid", "type": "string" } }, { "name": "reveal", - "required": true, + "required": false, "in": "query", "schema": { - "type": "boolean" + "type": "string" } } ], @@ -1678,11 +1788,6 @@ "schema": { "type": "object", "properties": { - "type": { - "nullable": true, - "type": "string", - "enum": ["publishable", "secret", "legacy"] - }, "name": { "type": "string" }, @@ -1693,6 +1798,11 @@ "type": "string", "nullable": true }, + "type": { + "type": "string", + "enum": ["publishable", "secret", "legacy"], + "nullable": true + }, "prefix": { "type": "string", "nullable": true @@ -1706,25 +1816,24 @@ "nullable": true }, "secret_jwt_template": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "role": { - "type": "string" - } - }, - "required": ["role"] + "type": "object", + "properties": { + "role": { + "type": "string", + "minLength": 1 } - ] + }, + "required": ["role"], + "nullable": true }, "inserted_at": { "type": "string", + "format": "date-time", "nullable": true }, "updated_at": { "type": "string", + "format": "date-time", "nullable": true } }, @@ -1732,6 +1841,9 @@ } } } + }, + "403": { + "description": "" } }, "tags": ["Secrets"], @@ -1753,6 +1865,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, @@ -1761,15 +1874,16 @@ "required": true, "in": "path", "schema": { + "format": "uuid", "type": "string" } }, { "name": "reveal", - "required": true, + "required": false, "in": "query", "schema": { - "type": "boolean" + "type": "string" } } ], @@ -1781,11 +1895,6 @@ "schema": { "type": "object", "properties": { - "type": { - "nullable": true, - "type": "string", - "enum": ["publishable", "secret", "legacy"] - }, "name": { "type": "string" }, @@ -1796,6 +1905,11 @@ "type": "string", "nullable": true }, + "type": { + "type": "string", + "enum": ["publishable", "secret", "legacy"], + "nullable": true + }, "prefix": { "type": "string", "nullable": true @@ -1809,25 +1923,24 @@ "nullable": true }, "secret_jwt_template": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "role": { - "type": "string" - } - }, - "required": ["role"] + "type": "object", + "properties": { + "role": { + "type": "string", + "minLength": 1 } - ] + }, + "required": ["role"], + "nullable": true }, "inserted_at": { "type": "string", + "format": "date-time", "nullable": true }, "updated_at": { "type": "string", + "format": "date-time", "nullable": true } }, @@ -1862,6 +1975,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -1876,15 +1990,6 @@ "items": { "type": "object", "properties": { - "pr_number": { - "type": "integer", - "format": "int32" - }, - "latest_check_run_id": { - "type": "number", - "deprecated": true, - "description": "This field is deprecated and will not be populated." - }, "id": { "type": "string" }, @@ -1903,10 +2008,20 @@ "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", @@ -1914,8 +2029,7 @@ "MIGRATIONS_FAILED", "FUNCTIONS_DEPLOYED", "FUNCTIONS_FAILED" - ], - "type": "string" + ] }, "created_at": { "type": "string" @@ -1940,6 +2054,9 @@ } } }, + "403": { + "description": "" + }, "500": { "description": "Failed to retrieve database branches" } @@ -1964,6 +2081,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -1975,9 +2093,24 @@ "schema": { "type": "object", "properties": { + "branch_name": { + "type": "string", + "minLength": 1 + }, + "git_branch": { + "type": "string" + }, + "persistent": { + "type": "boolean" + }, + "region": { + "type": "string" + }, "desired_instance_size": { "type": "string", "enum": [ + "pico", + "nano", "micro", "small", "medium", @@ -1992,24 +2125,19 @@ }, "release_channel": { "type": "string", - "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] + "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"], + "description": "Release channel. If not provided, GA will be used." }, "postgres_engine": { "type": "string", - "description": "Postgres engine version. If not provided, the latest version will be used.", - "enum": ["15", "17-oriole"] - }, - "branch_name": { - "type": "string" - }, - "git_branch": { - "type": "string" - }, - "persistent": { - "type": "boolean" + "enum": ["15", "17-oriole"], + "description": "Postgres engine version. If not provided, the latest version will be used." }, - "region": { - "type": "string" + "secrets": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, "required": ["branch_name"] @@ -2025,15 +2153,6 @@ "schema": { "type": "object", "properties": { - "pr_number": { - "type": "integer", - "format": "int32" - }, - "latest_check_run_id": { - "type": "number", - "deprecated": true, - "description": "This field is deprecated and will not be populated." - }, "id": { "type": "string" }, @@ -2052,10 +2171,20 @@ "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", @@ -2063,8 +2192,7 @@ "MIGRATIONS_FAILED", "FUNCTIONS_DEPLOYED", "FUNCTIONS_FAILED" - ], - "type": "string" + ] }, "created_at": { "type": "string" @@ -2088,6 +2216,9 @@ } } }, + "403": { + "description": "" + }, "500": { "description": "Failed to create database branch" } @@ -2112,6 +2243,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -2120,6 +2252,9 @@ "200": { "description": "" }, + "403": { + "description": "" + }, "500": { "description": "Failed to disable preview branching" } @@ -2145,6 +2280,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -2158,14 +2294,14 @@ "type": "object", "properties": { "status": { + "type": "string", "enum": [ "1_not_started", "2_initiated", "3_challenge_verified", "4_origin_setup_completed", "5_services_reconfigured" - ], - "type": "string" + ] }, "custom_hostname": { "type": "string" @@ -2179,13 +2315,13 @@ "errors": { "type": "array", "items": { - "type": "object" + "description": "Any JSON-serializable value" } }, "messages": { "type": "array", "items": { - "type": "object" + "description": "Any JSON-serializable value" } }, "result": { @@ -2305,6 +2441,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -2341,6 +2478,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -2370,14 +2508,14 @@ "type": "object", "properties": { "status": { + "type": "string", "enum": [ "1_not_started", "2_initiated", "3_challenge_verified", "4_origin_setup_completed", "5_services_reconfigured" - ], - "type": "string" + ] }, "custom_hostname": { "type": "string" @@ -2391,13 +2529,13 @@ "errors": { "type": "array", "items": { - "type": "object" + "description": "Any JSON-serializable value" } }, "messages": { "type": "array", "items": { - "type": "object" + "description": "Any JSON-serializable value" } }, "result": { @@ -2519,6 +2657,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -2532,14 +2671,14 @@ "type": "object", "properties": { "status": { + "type": "string", "enum": [ "1_not_started", "2_initiated", "3_challenge_verified", "4_origin_setup_completed", "5_services_reconfigured" - ], - "type": "string" + ] }, "custom_hostname": { "type": "string" @@ -2553,13 +2692,13 @@ "errors": { "type": "array", "items": { - "type": "object" + "description": "Any JSON-serializable value" } }, "messages": { "type": "array", "items": { - "type": "object" + "description": "Any JSON-serializable value" } }, "result": { @@ -2681,6 +2820,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -2694,14 +2834,14 @@ "type": "object", "properties": { "status": { + "type": "string", "enum": [ "1_not_started", "2_initiated", "3_challenge_verified", "4_origin_setup_completed", "5_services_reconfigured" - ], - "type": "string" + ] }, "custom_hostname": { "type": "string" @@ -2715,13 +2855,13 @@ "errors": { "type": "array", "items": { - "type": "object" + "description": "Any JSON-serializable value" } }, "messages": { "type": "array", "items": { - "type": "object" + "description": "Any JSON-serializable value" } }, "result": { @@ -2843,6 +2983,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -2895,6 +3036,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -2950,6 +3092,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -2963,8 +3106,8 @@ "type": "object", "properties": { "entitlement": { - "enum": ["disallowed", "allowed"], - "type": "string" + "type": "string", + "enum": ["disallowed", "allowed"] }, "config": { "type": "object", @@ -2981,7 +3124,8 @@ "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", @@ -2998,11 +3142,12 @@ "type": "string" } } - } + }, + "description": "Populated when a new config has been received, but not registered as successfully applied to a project." }, "status": { - "enum": ["stored", "applied"], - "type": "string" + "type": "string", + "enum": ["stored", "applied"] } }, "required": ["entitlement", "config", "status"] @@ -3038,6 +3183,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3075,8 +3221,8 @@ "type": "object", "properties": { "entitlement": { - "enum": ["disallowed", "allowed"], - "type": "string" + "type": "string", + "enum": ["disallowed", "allowed"] }, "config": { "type": "object", @@ -3093,7 +3239,8 @@ "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", @@ -3110,11 +3257,12 @@ "type": "string" } } - } + }, + "description": "Populated when a new config has been received, but not registered as successfully applied to a project." }, "status": { - "enum": ["stored", "applied"], - "type": "string" + "type": "string", + "enum": ["stored", "applied"] } }, "required": ["entitlement", "config", "status"] @@ -3150,6 +3298,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3197,6 +3346,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3262,6 +3412,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3274,25 +3425,25 @@ "schema": { "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." }, - "db_schema": { - "type": "string" - }, - "db_extra_search_path": { - "type": "string" - }, "jwt_secret": { "type": "string" } }, - "required": ["max_rows", "db_pool", "db_schema", "db_extra_search_path"] + "required": ["db_schema", "max_rows", "db_extra_search_path", "db_pool"] } } } @@ -3323,6 +3474,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3334,6 +3486,12 @@ "schema": { "type": "object", "properties": { + "db_extra_search_path": { + "type": "string" + }, + "db_schema": { + "type": "string" + }, "max_rows": { "type": "integer", "minimum": 0, @@ -3343,12 +3501,6 @@ "type": "integer", "minimum": 0, "maximum": 1000 - }, - "db_extra_search_path": { - "type": "string" - }, - "db_schema": { - "type": "string" } } } @@ -3363,22 +3515,22 @@ "schema": { "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." - }, - "db_schema": { - "type": "string" - }, - "db_extra_search_path": { - "type": "string" } }, - "required": ["max_rows", "db_pool", "db_schema", "db_extra_search_path"] + "required": ["db_schema", "max_rows", "db_extra_search_path", "db_pool"] } } } @@ -3411,6 +3563,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3445,6 +3598,26 @@ "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": { @@ -3466,26 +3639,6 @@ } }, "required": ["host", "version", "postgres_engine", "release_channel"] - }, - "status": { - "enum": [ - "ACTIVE_HEALTHY", - "ACTIVE_UNHEALTHY", - "COMING_UP", - "GOING_DOWN", - "INACTIVE", - "INIT_FAILED", - "REMOVED", - "RESTARTING", - "UNKNOWN", - "UPGRADING", - "PAUSING", - "RESTORING", - "RESTORE_FAILED", - "PAUSE_FAILED", - "RESIZING" - ], - "type": "string" } }, "required": [ @@ -3494,13 +3647,16 @@ "name", "region", "created_at", - "database", - "status" + "status", + "database" ] } } } }, + "403": { + "description": "" + }, "500": { "description": "Failed to retrieve project" } @@ -3524,6 +3680,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3578,6 +3735,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3597,6 +3755,9 @@ }, "value": { "type": "string" + }, + "updated_at": { + "type": "string" } }, "required": ["name", "value"] @@ -3632,6 +3793,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3643,21 +3805,7 @@ "schema": { "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"] + "type": "string" } } } @@ -3694,6 +3842,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3750,6 +3899,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3806,6 +3956,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3896,6 +4047,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3945,6 +4097,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -3958,8 +4111,8 @@ "type": "object", "properties": { "status": { - "enum": ["not-used", "custom-domain-used", "active"], - "type": "string" + "type": "string", + "enum": ["not-used", "custom-domain-used", "active"] }, "custom_domain": { "type": "string" @@ -3996,6 +4149,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -4032,6 +4186,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -4097,6 +4252,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -4162,6 +4318,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -4173,15 +4330,15 @@ "schema": { "type": "object", "properties": { + "target_version": { + "type": "string" + }, "release_channel": { "type": "string", "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] - }, - "target_version": { - "type": "string" } }, - "required": ["release_channel", "target_version"] + "required": ["target_version"] } } } @@ -4231,6 +4388,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -4243,19 +4401,16 @@ "schema": { "type": "object", "properties": { - "current_app_version_release_channel": { - "type": "string", - "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] - }, - "duration_estimate_hours": { - "type": "integer" - }, "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" }, @@ -4266,7 +4421,6 @@ "properties": { "postgres_version": { "type": "string", - "description": "Postgres engine version. If not provided, the latest version will be used.", "enum": ["15", "17-oriole"] }, "release_channel": { @@ -4286,6 +4440,9 @@ "type": "string" } }, + "duration_estimate_hours": { + "type": "number" + }, "legacy_auth_custom_roles": { "type": "array", "items": { @@ -4300,13 +4457,13 @@ } }, "required": [ - "current_app_version_release_channel", - "duration_estimate_hours", "eligible", "current_app_version", + "current_app_version_release_channel", "latest_app_version", "target_upgrade_versions", "potential_breaking_changes", + "duration_estimate_hours", "legacy_auth_custom_roles", "extension_dependent_objects" ] @@ -4342,6 +4499,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, @@ -4363,63 +4521,53 @@ "type": "object", "properties": { "databaseUpgradeStatus": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "target_version": { - "type": "integer" - }, - "status": { - "enum": [0, 1, 2], - "type": "integer" - }, - "initiated_at": { - "type": "string" - }, - "latest_status_at": { - "type": "string" - }, - "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" - ] - } - }, - "required": [ - "target_version", - "status", - "initiated_at", - "latest_status_at" + "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"] @@ -4455,6 +4603,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -4482,6 +4631,9 @@ } } }, + "403": { + "description": "" + }, "500": { "description": "Failed to get project readonly mode status" } @@ -4507,6 +4659,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -4515,6 +4668,9 @@ "201": { "description": "" }, + "403": { + "description": "" + }, "500": { "description": "Failed to disable project's readonly mode" } @@ -4540,6 +4696,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -4614,6 +4771,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -4666,29 +4824,26 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, { - "name": "timeout_ms", - "required": false, + "name": "services", + "required": true, "in": "query", "schema": { - "minimum": 0, - "maximum": 10000, - "type": "integer" + "type": "string" } }, { - "name": "services", - "required": true, + "name": "timeout_ms", + "required": false, "in": "query", "schema": { - "type": "array", - "items": { - "type": "string", - "enum": ["auth", "db", "pooler", "realtime", "rest", "storage"] - } + "minimum": 0, + "maximum": 10000, + "type": "integer" } } ], @@ -4702,6 +4857,17 @@ "items": { "type": "object", "properties": { + "name": { + "type": "string", + "enum": ["auth", "db", "pooler", "realtime", "rest", "storage"] + }, + "healthy": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": ["COMING_UP", "ACTIVE_HEALTHY", "UNHEALTHY"] + }, "info": { "oneOf": [ { @@ -4710,32 +4876,33 @@ "name": { "type": "string", "enum": ["GoTrue"] + }, + "version": { + "type": "string" + }, + "description": { + "type": "string" } }, - "required": ["name"] + "required": ["name", "version", "description"] }, { "type": "object", "properties": { + "healthy": { + "type": "boolean" + }, + "db_connected": { + "type": "boolean" + }, "connected_cluster": { "type": "integer" } }, - "required": ["connected_cluster"] + "required": ["healthy", "db_connected", "connected_cluster"] } ] }, - "name": { - "enum": ["auth", "db", "pooler", "realtime", "rest", "storage"], - "type": "string" - }, - "healthy": { - "type": "boolean" - }, - "status": { - "enum": ["COMING_UP", "ACTIVE_HEALTHY", "UNHEALTHY"], - "type": "string" - }, "error": { "type": "string" } @@ -4761,10 +4928,10 @@ ] } }, - "/v1/projects/{ref}/config/storage": { - "get": { - "operationId": "v1-get-storage-config", - "summary": "Gets project's storage config", + "/v1/projects/{ref}/config/auth/signing-keys": { + "post": { + "operationId": "createSigningKeyForProject", + "summary": "[Alpha] Create a new signing key for the project in standby status", "parameters": [ { "name": "ref", @@ -4774,60 +4941,70 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "enum": ["EdDSA", "ES256", "RS256", "HS256"] + }, + "status": { + "type": "string", + "enum": ["in_use", "standby"] + } + }, + "required": ["algorithm"], + "additionalProperties": false + } + } + } + }, "responses": { - "200": { - "description": "", + "201": { + "description": "[Alpha] Create a new signing key for the project in standby status", "content": { "application/json": { "schema": { "type": "object", "properties": { - "fileSizeLimit": { - "type": "integer", - "format": "int64" + "algorithm": { + "type": "string", + "enum": ["EdDSA", "ES256", "RS256", "HS256"] }, - "features": { - "type": "object", - "properties": { - "imageTransformation": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - } - }, - "required": ["enabled"] - } - }, - "required": ["imageTransformation"] + "status": { + "type": "string", + "enum": ["in_use", "standby"] } }, - "required": ["fileSizeLimit", "features"] + "required": ["algorithm"], + "additionalProperties": false } } } }, "403": { "description": "" - }, - "500": { - "description": "Failed to retrieve project's storage config" } }, - "tags": ["Storage"], + "tags": ["Auth"], "security": [ { "bearer": [] } ] }, - "patch": { - "operationId": "v1-update-storage-config", - "summary": "Updates project's storage config", + "get": { + "operationId": "listSigningKeysForProject", + "summary": "[Alpha] List all signing keys for the project", "parameters": [ { "name": "ref", @@ -4837,55 +5014,64 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "fileSizeLimit": { - "type": "integer", - "minimum": 0, - "maximum": 53687091200, - "format": "int64" - }, - "features": { - "type": "object", - "properties": { - "imageTransformation": { + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { "type": "object", "properties": { - "enabled": { - "type": "boolean" + "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": ["enabled"] + "required": ["id", "algorithm", "status", "created_at", "updated_at"], + "additionalProperties": false } - }, - "required": ["imageTransformation"] - } + } + }, + "required": ["keys"], + "additionalProperties": false } } } - } - }, - "responses": { - "200": { - "description": "" }, "403": { "description": "" - }, - "500": { - "description": "Failed to update project's storage config" } }, - "tags": ["Storage"], + "tags": ["Auth"], "security": [ { "bearer": [] @@ -4893,11 +5079,20 @@ ] } }, - "/v1/projects/{ref}/config/database/postgres": { + "/v1/projects/{ref}/config/auth/signing-keys/{id}": { "get": { - "operationId": "v1-get-postgres-config", - "summary": "Gets project's Postgres config", + "operationId": "getSigningKeyForProject", + "summary": "[Alpha] Get information about a signing key", "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "type": "string" + } + }, { "name": "ref", "required": true, @@ -4906,6 +5101,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -4918,105 +5114,135 @@ "schema": { "type": "object", "properties": { - "effective_cache_size": { - "type": "string" - }, - "logical_decoding_work_mem": { - "type": "string" - }, - "maintenance_work_mem": { - "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" + "id": { + "type": "string", + "format": "uuid" }, - "max_wal_size": { - "type": "string" + "algorithm": { + "type": "string", + "enum": ["EdDSA", "ES256", "RS256", "HS256"] }, - "max_wal_senders": { - "type": "integer" + "status": { + "type": "string", + "enum": ["in_use", "previously_used", "revoked", "standby"] }, - "max_worker_processes": { - "type": "integer", - "minimum": 0, - "maximum": 262143 + "public_jwk": { + "nullable": true }, - "shared_buffers": { - "type": "string" + "created_at": { + "type": "string", + "format": "date-time" }, - "statement_timeout": { - "type": "string" + "updated_at": { + "type": "string", + "format": "date-time" + } + }, + "required": ["id", "algorithm", "status", "created_at", "updated_at"], + "additionalProperties": false + } + } + } + }, + "403": { + "description": "" + } + }, + "tags": ["Auth"], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "deleteSigningKey", + "summary": "[Alpha] Remove a signing key from a project, where the status is previously_used", + "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": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" }, - "track_commit_timestamp": { - "type": "boolean" + "algorithm": { + "type": "string", + "enum": ["EdDSA", "ES256", "RS256", "HS256"] }, - "wal_keep_size": { - "type": "string" + "status": { + "type": "string", + "enum": ["in_use", "previously_used", "revoked", "standby"] }, - "wal_sender_timeout": { - "type": "string" + "public_jwk": { + "nullable": true }, - "work_mem": { - "type": "string" + "created_at": { + "type": "string", + "format": "date-time" }, - "session_replication_role": { - "enum": ["origin", "replica", "local"], - "type": "string" + "updated_at": { + "type": "string", + "format": "date-time" } - } + }, + "required": ["id", "algorithm", "status", "created_at", "updated_at"], + "additionalProperties": false } } } }, - "500": { - "description": "Failed to retrieve project's Postgres config" + "403": { + "description": "" } }, - "tags": ["Database"], + "tags": ["Auth"], "security": [ { "bearer": [] } ] }, - "put": { - "operationId": "v1-update-postgres-config", - "summary": "Updates project's Postgres config", + "patch": { + "operationId": "patchSigningKey", + "summary": "[Alpha] Update a signing key, mainly its status", "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "type": "string" + } + }, { "name": "ref", "required": true, @@ -5025,6 +5251,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -5036,93 +5263,235 @@ "schema": { "type": "object", "properties": { - "effective_cache_size": { - "type": "string" - }, - "logical_decoding_work_mem": { - "type": "string" - }, - "maintenance_work_mem": { - "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" + "status": { + "type": "string", + "enum": ["in_use", "previously_used", "revoked", "standby"] + } + }, + "required": ["status"], + "additionalProperties": false + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "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" + } }, - "max_wal_senders": { - "type": "integer" + "required": ["id", "algorithm", "status", "created_at", "updated_at"], + "additionalProperties": false + } + } + } + }, + "403": { + "description": "" + } + }, + "tags": ["Auth"], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/v1/projects/{ref}/config/storage": { + "get": { + "operationId": "v1-get-storage-config", + "summary": "Gets project's 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": { + "type": "object", + "properties": { + "fileSizeLimit": { + "type": "integer" + }, + "features": { + "type": "object", + "properties": { + "imageTransformation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"] + }, + "s3Protocol": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"] + } + }, + "required": ["imageTransformation", "s3Protocol"] + } }, - "max_worker_processes": { + "required": ["fileSizeLimit", "features"] + } + } + } + }, + "403": { + "description": "" + }, + "500": { + "description": "Failed to retrieve project's storage config" + } + }, + "tags": ["Storage"], + "security": [ + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "v1-update-storage-config", + "summary": "Updates project's 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": { + "type": "object", + "properties": { + "fileSizeLimit": { "type": "integer", "minimum": 0, - "maximum": 262143 - }, - "shared_buffers": { - "type": "string" - }, - "statement_timeout": { - "type": "string" - }, - "track_commit_timestamp": { - "type": "boolean" + "maximum": 53687091200 }, - "wal_keep_size": { - "type": "string" - }, - "wal_sender_timeout": { - "type": "string" - }, - "work_mem": { - "type": "string" - }, - "restart_database": { - "type": "boolean" - }, - "session_replication_role": { - "enum": ["origin", "replica", "local"], - "type": "string" + "features": { + "type": "object", + "properties": { + "imageTransformation": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"] + }, + "s3Protocol": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"] + } + }, + "required": ["imageTransformation", "s3Protocol"] } } } } } }, + "responses": { + "200": { + "description": "" + }, + "403": { + "description": "" + }, + "500": { + "description": "Failed to update project's storage config" + } + }, + "tags": ["Storage"], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/v1/projects/{ref}/config/database/postgres": { + "get": { + "operationId": "v1-get-postgres-config", + "summary": "Gets project's 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": "", @@ -5140,6 +5509,9 @@ "maintenance_work_mem": { "type": "string" }, + "track_activity_query_size": { + "type": "string" + }, "max_connections": { "type": "integer", "minimum": 1, @@ -5188,6 +5560,10 @@ "minimum": 0, "maximum": 262143 }, + "session_replication_role": { + "type": "string", + "enum": ["origin", "replica", "local"] + }, "shared_buffers": { "type": "string" }, @@ -5205,10 +5581,6 @@ }, "work_mem": { "type": "string" - }, - "session_replication_role": { - "enum": ["origin", "replica", "local"], - "type": "string" } } } @@ -5219,7 +5591,230 @@ "description": "" }, "500": { - "description": "Failed to update project's Postgres config" + "description": "Failed to retrieve project's Postgres config" + } + }, + "tags": ["Database"], + "security": [ + { + "bearer": [] + } + ] + }, + "put": { + "operationId": "v1-update-postgres-config", + "summary": "Updates project's 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": { + "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" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "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" + } + } + } + } + } + }, + "403": { + "description": "" + }, + "500": { + "description": "Failed to update project's Postgres config" } }, "tags": ["Database"], @@ -5243,6 +5838,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -5276,6 +5872,9 @@ } } }, + "403": { + "description": "" + }, "500": { "description": "Failed to retrieve project's pgbouncer config" } @@ -5285,7 +5884,7 @@ }, "/v1/projects/{ref}/config/database/pooler": { "get": { - "operationId": "v1-get-supavisor-config", + "operationId": "getSupavisorConfig", "summary": "Gets project's supavisor config", "parameters": [ { @@ -5296,6 +5895,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -5310,23 +5910,12 @@ "items": { "type": "object", "properties": { - "db_port": { - "type": "integer" - }, - "default_pool_size": { - "type": "integer", - "nullable": true - }, - "max_client_conn": { - "type": "integer", - "nullable": true - }, "identifier": { "type": "string" }, "database_type": { - "enum": ["PRIMARY", "READ_REPLICA"], - "type": "string" + "type": "string", + "enum": ["PRIMARY", "READ_REPLICA"] }, "is_using_scram_auth": { "type": "boolean" @@ -5337,28 +5926,44 @@ "db_host": { "type": "string" }, + "db_port": { + "type": "integer" + }, "db_name": { "type": "string" }, - "connectionString": { + "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": { - "enum": ["transaction", "session"], - "type": "string" + "type": "string", + "enum": ["transaction", "session"] } }, "required": [ - "db_port", - "default_pool_size", - "max_client_conn", "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" ] } @@ -5378,7 +5983,7 @@ ] }, "patch": { - "operationId": "v1-update-supavisor-config", + "operationId": "updateSupavisorConfig", "summary": "Updates project's supavisor config", "parameters": [ { @@ -5389,6 +5994,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -5402,15 +6008,14 @@ "properties": { "default_pool_size": { "type": "integer", - "nullable": true, "minimum": 0, - "maximum": 1000 + "maximum": 1000, + "nullable": true }, "pool_mode": { - "enum": ["transaction", "session"], "type": "string", - "deprecated": true, - "description": "This field is deprecated and is ignored in this request" + "enum": ["transaction", "session"], + "description": "Dedicated pooler mode for the project" } } } @@ -5430,7 +6035,6 @@ "nullable": true }, "pool_mode": { - "enum": ["transaction", "session"], "type": "string" } }, @@ -5467,6 +6071,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -5487,83 +6092,6 @@ "type": "integer", "nullable": true }, - "jwt_exp": { - "type": "integer", - "nullable": true - }, - "mailer_otp_exp": { - "type": "integer" - }, - "mailer_otp_length": { - "type": "integer", - "nullable": true - }, - "mfa_max_enrolled_factors": { - "type": "integer", - "nullable": true - }, - "mfa_phone_otp_length": { - "type": "integer" - }, - "mfa_phone_max_frequency": { - "type": "integer", - "nullable": true - }, - "password_min_length": { - "type": "integer", - "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 - }, - "security_refresh_token_reuse_interval": { - "type": "integer", - "nullable": true - }, - "sessions_inactivity_timeout": { - "type": "integer", - "nullable": true - }, - "sessions_timebox": { - "type": "integer", - "nullable": true - }, - "sms_max_frequency": { - "type": "integer", - "nullable": true - }, - "sms_otp_exp": { - "type": "integer", - "nullable": true - }, - "sms_otp_length": { - "type": "integer" - }, - "smtp_max_frequency": { - "type": "integer", - "nullable": true - }, "disable_signup": { "type": "boolean", "nullable": true @@ -5836,6 +6364,10 @@ "type": "string", "nullable": true }, + "external_web3_solana_enabled": { + "type": "boolean", + "nullable": true + }, "external_zoom_client_id": { "type": "string", "nullable": true @@ -5908,6 +6440,10 @@ "type": "string", "nullable": true }, + "jwt_exp": { + "type": "integer", + "nullable": true + }, "mailer_allow_unverified_email_sign_ins": { "type": "boolean", "nullable": true @@ -5916,6 +6452,13 @@ "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 @@ -5968,6 +6511,10 @@ "type": "string", "nullable": true }, + "mfa_max_enrolled_factors": { + "type": "integer", + "nullable": true + }, "mfa_totp_enroll_enabled": { "type": "boolean", "nullable": true @@ -5992,18 +6539,57 @@ "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 + }, "password_hibp_enabled": { "type": "boolean", "nullable": true }, + "password_min_length": { + "type": "integer", + "nullable": true + }, "password_required_characters": { "type": "string", "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 @@ -6036,10 +6622,18 @@ "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 @@ -6048,6 +6642,10 @@ "type": "string", "nullable": true }, + "sessions_timebox": { + "type": "integer", + "nullable": true + }, "site_url": { "type": "string", "nullable": true @@ -6056,6 +6654,10 @@ "type": "boolean", "nullable": true }, + "sms_max_frequency": { + "type": "integer", + "nullable": true + }, "sms_messagebird_access_key": { "type": "string", "nullable": true @@ -6064,6 +6666,13 @@ "type": "string", "nullable": true }, + "sms_otp_exp": { + "type": "integer", + "nullable": true + }, + "sms_otp_length": { + "type": "integer" + }, "sms_provider": { "type": "string", "nullable": true @@ -6136,6 +6745,10 @@ "type": "string", "nullable": true }, + "smtp_max_frequency": { + "type": "integer", + "nullable": true + }, "smtp_pass": { "type": "string", "nullable": true @@ -6160,26 +6773,6 @@ "required": [ "api_max_request_duration", "db_max_pool_size", - "jwt_exp", - "mailer_otp_exp", - "mailer_otp_length", - "mfa_max_enrolled_factors", - "mfa_phone_otp_length", - "mfa_phone_max_frequency", - "password_min_length", - "rate_limit_anonymous_users", - "rate_limit_email_sent", - "rate_limit_sms_sent", - "rate_limit_token_refresh", - "rate_limit_verify", - "rate_limit_otp", - "security_refresh_token_reuse_interval", - "sessions_inactivity_timeout", - "sessions_timebox", - "sms_max_frequency", - "sms_otp_exp", - "sms_otp_length", - "smtp_max_frequency", "disable_signup", "external_anonymous_users_enabled", "external_apple_additional_client_ids", @@ -6248,6 +6841,7 @@ "external_workos_enabled", "external_workos_secret", "external_workos_url", + "external_web3_solana_enabled", "external_zoom_client_id", "external_zoom_enabled", "external_zoom_secret", @@ -6266,8 +6860,11 @@ "hook_send_email_enabled", "hook_send_email_uri", "hook_send_email_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", @@ -6281,15 +6878,26 @@ "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", "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", @@ -6298,13 +6906,19 @@ "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", @@ -6323,6 +6937,7 @@ "sms_vonage_from", "smtp_admin_email", "smtp_host", + "smtp_max_frequency", "smtp_pass", "smtp_port", "smtp_sender_name", @@ -6359,6 +6974,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -6370,220 +6986,229 @@ "schema": { "type": "object", "properties": { + "site_url": { + "type": "string", + "pattern": "^[^,]+$", + "nullable": true + }, + "disable_signup": { + "type": "boolean", + "nullable": true + }, "jwt_exp": { "type": "integer", "minimum": 0, - "maximum": 604800 + "maximum": 604800, + "nullable": true }, - "smtp_max_frequency": { - "type": "integer", - "minimum": 0, - "maximum": 32767 + "smtp_admin_email": { + "type": "string", + "nullable": true }, - "mfa_max_enrolled_factors": { - "type": "integer", - "minimum": 0, - "maximum": 2147483647 + "smtp_host": { + "type": "string", + "nullable": true }, - "sessions_timebox": { - "type": "integer", - "minimum": 0 + "smtp_port": { + "type": "string", + "nullable": true }, - "sessions_inactivity_timeout": { - "type": "integer", - "minimum": 0 + "smtp_user": { + "type": "string", + "nullable": true }, - "rate_limit_anonymous_users": { - "type": "integer", - "minimum": 1, - "maximum": 2147483647 + "smtp_pass": { + "type": "string", + "nullable": true }, - "rate_limit_email_sent": { + "smtp_max_frequency": { "type": "integer", - "minimum": 1, - "maximum": 2147483647 - }, - "rate_limit_sms_sent": { - "type": "integer", - "minimum": 1, - "maximum": 2147483647 - }, - "rate_limit_verify": { - "type": "integer", - "minimum": 1, - "maximum": 2147483647 - }, - "rate_limit_token_refresh": { - "type": "integer", - "minimum": 1, - "maximum": 2147483647 - }, - "rate_limit_otp": { - "type": "integer", - "minimum": 1, - "maximum": 2147483647 - }, - "password_min_length": { - "type": "integer", - "minimum": 6, - "maximum": 32767 - }, - "security_refresh_token_reuse_interval": { - "type": "integer", - "minimum": 0, - "maximum": 2147483647 - }, - "mailer_otp_exp": { - "type": "integer", - "minimum": 0, - "maximum": 2147483647 - }, - "mailer_otp_length": { - "type": "integer", - "minimum": 6, - "maximum": 10 - }, - "sms_max_frequency": { - "type": "integer", - "minimum": 0, - "maximum": 32767 - }, - "sms_otp_exp": { - "type": "integer", - "minimum": 0, - "maximum": 2147483647 - }, - "sms_otp_length": { - "type": "integer", - "minimum": 0, - "maximum": 32767 - }, - "db_max_pool_size": { - "type": "integer" - }, - "api_max_request_duration": { - "type": "integer" - }, - "mfa_phone_max_frequency": { - "type": "integer", - "minimum": 0, - "maximum": 32767 - }, - "mfa_phone_otp_length": { - "type": "integer", - "minimum": 0, - "maximum": 32767 - }, - "site_url": { - "type": "string", - "pattern": "/^[^,]+$/" - }, - "disable_signup": { - "type": "boolean" - }, - "smtp_admin_email": { - "type": "string" - }, - "smtp_host": { - "type": "string" - }, - "smtp_port": { - "type": "string" - }, - "smtp_user": { - "type": "string" - }, - "smtp_pass": { - "type": "string" + "minimum": 0, + "maximum": 32767, + "nullable": true }, "smtp_sender_name": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_allow_unverified_email_sign_ins": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mailer_autoconfirm": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mailer_subjects_invite": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_subjects_confirmation": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_subjects_recovery": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_subjects_email_change": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_subjects_magic_link": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_subjects_reauthentication": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_invite_content": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_confirmation_content": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_recovery_content": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_email_change_content": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_magic_link_content": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_reauthentication_content": { - "type": "string" + "type": "string", + "nullable": true + }, + "mfa_max_enrolled_factors": { + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "nullable": true }, "uri_allow_list": { - "type": "string" + "type": "string", + "nullable": true }, "external_anonymous_users_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_email_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_phone_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "saml_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "saml_external_url": { "type": "string", - "pattern": "/^[^,]+$/" + "pattern": "^[^,]+$", + "nullable": true }, "security_captcha_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "security_captcha_provider": { - "type": "string" + "type": "string", + "enum": ["turnstile", "hcaptcha"], + "nullable": true }, "security_captcha_secret": { - "type": "string" + "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" + "type": "boolean", + "nullable": true }, "sessions_tags": { "type": "string", - "pattern": "/^\\s*([a-z0-9_-]+(\\s*,+\\s*)?)*\\s*$/i" + "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" + "type": "boolean", + "nullable": true }, "refresh_token_rotation_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "password_hibp_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true + }, + "password_min_length": { + "type": "integer", + "minimum": 6, + "maximum": 32767, + "nullable": true }, "password_required_characters": { "type": "string", @@ -6592,338 +7217,509 @@ "abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789", "abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789:!@#$%^&*()_+-=[]{};'\\\\:\"|<>?,./`~", "" - ] + ], + "nullable": true }, "security_manual_linking_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "security_update_password_require_reauthentication": { - "type": "boolean" - }, - "sms_autoconfirm": { - "type": "boolean" + "type": "boolean", + "nullable": true }, - "sms_provider": { - "type": "string" + "security_refresh_token_reuse_interval": { + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "nullable": true }, - "sms_messagebird_access_key": { - "type": "string" + "mailer_otp_exp": { + "type": "integer", + "minimum": 0, + "maximum": 2147483647 }, - "sms_messagebird_originator": { - "type": "string" + "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]+,?)*$/" + "pattern": "^([0-9]{1,15}=[0-9]+,?)*$", + "nullable": true }, "sms_test_otp_valid_until": { - "type": "string" + "type": "string", + "format": "date-time", + "nullable": true }, "sms_textlocal_api_key": { - "type": "string" + "type": "string", + "nullable": true }, "sms_textlocal_sender": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_account_sid": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_auth_token": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_content_sid": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_message_service_sid": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_verify_account_sid": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_verify_auth_token": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_verify_message_service_sid": { - "type": "string" + "type": "string", + "nullable": true }, "sms_vonage_api_key": { - "type": "string" + "type": "string", + "nullable": true }, "sms_vonage_api_secret": { - "type": "string" + "type": "string", + "nullable": true }, "sms_vonage_from": { - "type": "string" + "type": "string", + "nullable": true }, "sms_template": { - "type": "string" + "type": "string", + "nullable": true }, "hook_mfa_verification_attempt_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "hook_mfa_verification_attempt_uri": { - "type": "string" + "type": "string", + "nullable": true }, "hook_mfa_verification_attempt_secrets": { - "type": "string" + "type": "string", + "nullable": true }, "hook_password_verification_attempt_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "hook_password_verification_attempt_uri": { - "type": "string" + "type": "string", + "nullable": true }, "hook_password_verification_attempt_secrets": { - "type": "string" + "type": "string", + "nullable": true }, "hook_custom_access_token_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "hook_custom_access_token_uri": { - "type": "string" + "type": "string", + "nullable": true }, "hook_custom_access_token_secrets": { - "type": "string" + "type": "string", + "nullable": true }, "hook_send_sms_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "hook_send_sms_uri": { - "type": "string" + "type": "string", + "nullable": true }, "hook_send_sms_secrets": { - "type": "string" + "type": "string", + "nullable": true }, "hook_send_email_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "hook_send_email_uri": { - "type": "string" + "type": "string", + "nullable": true }, "hook_send_email_secrets": { - "type": "string" + "type": "string", + "nullable": true }, "external_apple_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_apple_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_apple_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_apple_additional_client_ids": { - "type": "string" + "type": "string", + "nullable": true }, "external_azure_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_azure_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_azure_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_azure_url": { - "type": "string" + "type": "string", + "nullable": true }, "external_bitbucket_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_bitbucket_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_bitbucket_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_discord_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_discord_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_discord_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_facebook_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_facebook_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_facebook_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_figma_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_figma_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_figma_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_github_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_github_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_github_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_gitlab_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_gitlab_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_gitlab_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_gitlab_url": { - "type": "string" + "type": "string", + "nullable": true }, "external_google_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_google_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_google_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_google_additional_client_ids": { - "type": "string" + "type": "string", + "nullable": true }, "external_google_skip_nonce_check": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_kakao_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_kakao_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_kakao_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_keycloak_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_keycloak_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_keycloak_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_keycloak_url": { - "type": "string" + "type": "string", + "nullable": true }, "external_linkedin_oidc_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_linkedin_oidc_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_linkedin_oidc_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_slack_oidc_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_slack_oidc_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_slack_oidc_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_notion_enabled": { - "type": "boolean" - }, + "type": "boolean", + "nullable": true + }, "external_notion_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_notion_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_slack_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_slack_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_slack_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_spotify_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_spotify_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_spotify_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_twitch_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_twitch_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_twitch_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_twitter_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_twitter_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_twitter_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_workos_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_workos_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_workos_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_workos_url": { - "type": "string" + "type": "string", + "nullable": true + }, + "external_web3_solana_enabled": { + "type": "boolean", + "nullable": true }, "external_zoom_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_zoom_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_zoom_secret": { - "type": "string" + "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" + "type": "boolean", + "nullable": true }, "mfa_totp_verify_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mfa_web_authn_enroll_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mfa_web_authn_verify_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mfa_phone_enroll_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mfa_phone_verify_enabled": { - "type": "boolean" + "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" + "type": "string", + "nullable": true } } } @@ -6946,83 +7742,6 @@ "type": "integer", "nullable": true }, - "jwt_exp": { - "type": "integer", - "nullable": true - }, - "mailer_otp_exp": { - "type": "integer" - }, - "mailer_otp_length": { - "type": "integer", - "nullable": true - }, - "mfa_max_enrolled_factors": { - "type": "integer", - "nullable": true - }, - "mfa_phone_otp_length": { - "type": "integer" - }, - "mfa_phone_max_frequency": { - "type": "integer", - "nullable": true - }, - "password_min_length": { - "type": "integer", - "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 - }, - "security_refresh_token_reuse_interval": { - "type": "integer", - "nullable": true - }, - "sessions_inactivity_timeout": { - "type": "integer", - "nullable": true - }, - "sessions_timebox": { - "type": "integer", - "nullable": true - }, - "sms_max_frequency": { - "type": "integer", - "nullable": true - }, - "sms_otp_exp": { - "type": "integer", - "nullable": true - }, - "sms_otp_length": { - "type": "integer" - }, - "smtp_max_frequency": { - "type": "integer", - "nullable": true - }, "disable_signup": { "type": "boolean", "nullable": true @@ -7295,6 +8014,10 @@ "type": "string", "nullable": true }, + "external_web3_solana_enabled": { + "type": "boolean", + "nullable": true + }, "external_zoom_client_id": { "type": "string", "nullable": true @@ -7367,6 +8090,10 @@ "type": "string", "nullable": true }, + "jwt_exp": { + "type": "integer", + "nullable": true + }, "mailer_allow_unverified_email_sign_ins": { "type": "boolean", "nullable": true @@ -7375,6 +8102,13 @@ "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 @@ -7427,6 +8161,10 @@ "type": "string", "nullable": true }, + "mfa_max_enrolled_factors": { + "type": "integer", + "nullable": true + }, "mfa_totp_enroll_enabled": { "type": "boolean", "nullable": true @@ -7451,18 +8189,57 @@ "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 + }, "password_hibp_enabled": { "type": "boolean", "nullable": true }, + "password_min_length": { + "type": "integer", + "nullable": true + }, "password_required_characters": { "type": "string", "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 @@ -7495,10 +8272,18 @@ "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 @@ -7507,6 +8292,10 @@ "type": "string", "nullable": true }, + "sessions_timebox": { + "type": "integer", + "nullable": true + }, "site_url": { "type": "string", "nullable": true @@ -7515,14 +8304,25 @@ "type": "boolean", "nullable": true }, - "sms_messagebird_access_key": { - "type": "string", - "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", "nullable": true @@ -7595,6 +8395,10 @@ "type": "string", "nullable": true }, + "smtp_max_frequency": { + "type": "integer", + "nullable": true + }, "smtp_pass": { "type": "string", "nullable": true @@ -7619,26 +8423,6 @@ "required": [ "api_max_request_duration", "db_max_pool_size", - "jwt_exp", - "mailer_otp_exp", - "mailer_otp_length", - "mfa_max_enrolled_factors", - "mfa_phone_otp_length", - "mfa_phone_max_frequency", - "password_min_length", - "rate_limit_anonymous_users", - "rate_limit_email_sent", - "rate_limit_sms_sent", - "rate_limit_token_refresh", - "rate_limit_verify", - "rate_limit_otp", - "security_refresh_token_reuse_interval", - "sessions_inactivity_timeout", - "sessions_timebox", - "sms_max_frequency", - "sms_otp_exp", - "sms_otp_length", - "smtp_max_frequency", "disable_signup", "external_anonymous_users_enabled", "external_apple_additional_client_ids", @@ -7707,6 +8491,7 @@ "external_workos_enabled", "external_workos_secret", "external_workos_url", + "external_web3_solana_enabled", "external_zoom_client_id", "external_zoom_enabled", "external_zoom_secret", @@ -7725,8 +8510,11 @@ "hook_send_email_enabled", "hook_send_email_uri", "hook_send_email_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", @@ -7740,15 +8528,26 @@ "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", "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", @@ -7757,13 +8556,19 @@ "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", @@ -7782,6 +8587,7 @@ "sms_vonage_from", "smtp_admin_email", "smtp_host", + "smtp_max_frequency", "smtp_pass", "smtp_port", "smtp_sender_name", @@ -7820,6 +8626,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -7837,9 +8644,7 @@ "jwks_url": { "type": "string" }, - "custom_jwks": { - "type": "object" - } + "custom_jwks": {} } } } @@ -7854,7 +8659,8 @@ "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "format": "uuid" }, "type": { "type": "string" @@ -7868,11 +8674,9 @@ "nullable": true }, "custom_jwks": { - "type": "object", "nullable": true }, "resolved_jwks": { - "type": "object", "nullable": true }, "inserted_at": { @@ -7904,7 +8708,7 @@ }, "get": { "operationId": "listTPAForProject", - "summary": "[Alpha] Lists all third-party auth integrations", + "summary": "Lists all third-party auth integrations", "parameters": [ { "name": "ref", @@ -7914,6 +8718,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -7929,7 +8734,8 @@ "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "format": "uuid" }, "type": { "type": "string" @@ -7943,11 +8749,9 @@ "nullable": true }, "custom_jwks": { - "type": "object", "nullable": true }, "resolved_jwks": { - "type": "object", "nullable": true }, "inserted_at": { @@ -7982,7 +8786,7 @@ "/v1/projects/{ref}/config/auth/third-party-auth/{tpa_id}": { "delete": { "operationId": "deleteTPAForProject", - "summary": "[Alpha] Removes a third-party auth integration", + "summary": "Removes a third-party auth integration", "parameters": [ { "name": "ref", @@ -7992,6 +8796,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, @@ -8000,6 +8805,7 @@ "required": true, "in": "path", "schema": { + "format": "uuid", "type": "string" } } @@ -8013,7 +8819,8 @@ "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "format": "uuid" }, "type": { "type": "string" @@ -8027,11 +8834,9 @@ "nullable": true }, "custom_jwks": { - "type": "object", "nullable": true }, "resolved_jwks": { - "type": "object", "nullable": true }, "inserted_at": { @@ -8063,7 +8868,7 @@ }, "get": { "operationId": "getTPAForProject", - "summary": "[Alpha] Get a third-party integration", + "summary": "Get a third-party integration", "parameters": [ { "name": "ref", @@ -8073,6 +8878,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, @@ -8081,6 +8887,7 @@ "required": true, "in": "path", "schema": { + "format": "uuid", "type": "string" } } @@ -8094,7 +8901,8 @@ "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "format": "uuid" }, "type": { "type": "string" @@ -8108,11 +8916,9 @@ "nullable": true }, "custom_jwks": { - "type": "object", "nullable": true }, "resolved_jwks": { - "type": "object", "nullable": true }, "inserted_at": { @@ -8156,6 +8962,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -8176,10 +8983,10 @@ ] } }, - "/v1/projects/{ref}/database/query": { - "post": { - "operationId": "v1-run-a-query", - "summary": "[Beta] Run sql query", + "/v1/projects/{ref}/restore": { + "get": { + "operationId": "v1-list-available-restore-versions", + "summary": "Lists available restore versions for the given project", "parameters": [ { "name": "ref", @@ -8189,56 +8996,59 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "query": { - "type": "string" - } - }, - "required": ["query"] - } - } - } - }, "responses": { - "201": { + "200": { "description": "", "content": { "application/json": { "schema": { - "type": "object" + "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"] } } } }, "403": { "description": "" - }, - "500": { - "description": "Failed to run sql query" } }, - "tags": ["Database"], + "tags": ["Projects"], "security": [ { "bearer": [] } ] - } - }, - "/v1/projects/{ref}/database/webhooks/enable": { + }, "post": { - "operationId": "v1-enable-database-webhook", - "summary": "[Beta] Enables Database Webhooks on the project", + "operationId": "v1-restore-a-project", + "summary": "Restores the given project", "parameters": [ { "name": "ref", @@ -8248,22 +9058,20 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { - "201": { + "200": { "description": "" }, "403": { "description": "" - }, - "500": { - "description": "Failed to enable Database Webhooks on the project" } }, - "tags": ["Database"], + "tags": ["Projects"], "security": [ { "bearer": [] @@ -8271,11 +9079,10 @@ ] } }, - "/v1/projects/{ref}/functions": { + "/v1/projects/{ref}/restore/cancel": { "post": { - "operationId": "v1-create-a-function", - "summary": "Create a function", - "description": "Creates a function and adds it to the specified project.", + "operationId": "v1-cancel-a-project-restoration", + "summary": "Cancels the given project restoration", "parameters": [ { "name": "ref", @@ -8285,183 +9092,253 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } + } + ], + "responses": { + "200": { + "description": "" }, + "403": { + "description": "" + } + }, + "tags": ["Projects"], + "security": [ { - "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", - "schema": { - "type": "boolean" - } - }, - { - "name": "import_map", - "required": false, - "in": "query", - "schema": { - "type": "boolean" - } - }, - { - "name": "entrypoint_path", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, + "bearer": [] + } + ] + } + }, + "/v1/projects/{ref}/billing/addons": { + "get": { + "operationId": "v1-list-project-addons", + "summary": "Lists project addons", + "parameters": [ { - "name": "import_map_path", - "required": false, - "in": "query", + "name": "ref", + "required": true, + "in": "path", + "description": "Project ref", "schema": { + "minLength": 20, + "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } - }, - { - "name": "compute_multiplier", - "required": false, - "in": "query", - "schema": { - "minimum": 1, - "maximum": 4, - "type": "number" - } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "slug": { - "type": "string", - "pattern": "/^[A-Za-z0-9_-]+$/" - }, - "name": { - "type": "string" - }, - "body": { - "type": "string" - }, - "verify_jwt": { - "type": "boolean" - }, - "compute_multiplier": { - "type": "number", - "minimum": 1, - "maximum": 4 - } - }, - "required": ["slug", "name", "body"] - } - }, - "application/vnd.denoland.eszip": { - "schema": { - "type": "object", - "properties": { - "slug": { - "type": "string", - "pattern": "/^[A-Za-z0-9_-]+$/" - }, - "name": { - "type": "string" - }, - "body": { - "type": "string" - }, - "verify_jwt": { - "type": "boolean" - }, - "compute_multiplier": { - "type": "number", - "minimum": 1, - "maximum": 4 - } - }, - "required": ["slug", "name", "body"] - } - } - } - }, "responses": { - "201": { + "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { - "version": { - "type": "integer" - }, - "created_at": { - "type": "integer", - "format": "int64" - }, - "updated_at": { - "type": "integer", - "format": "int64" - }, - "id": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "name": { - "type": "string" - }, - "status": { - "enum": ["ACTIVE", "REMOVED", "THROTTLED"], - "type": "string" - }, - "verify_jwt": { - "type": "boolean" - }, - "import_map": { - "type": "boolean" - }, - "entrypoint_path": { - "type": "string" - }, - "import_map_path": { - "type": "string" + "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" + ] + }, + { + "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"] + } }, - "compute_multiplier": { - "type": "number" + "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" + ] + }, + { + "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": [ - "version", - "created_at", - "updated_at", - "id", - "slug", - "name", - "status" - ] + "required": ["selected_addons", "available_addons"] } } } @@ -8470,20 +9347,18 @@ "description": "" }, "500": { - "description": "Failed to create project's function" + "description": "Failed to list project addons" } }, - "tags": ["Edge Functions"], "security": [ { "bearer": [] } ] }, - "get": { - "operationId": "v1-list-all-functions", - "summary": "List all functions", - "description": "Returns all functions you've previously added to the specified project.", + "patch": { + "operationId": "v1-apply-project-addon", + "summary": "Applies project addon", "parameters": [ { "name": "ref", @@ -8493,82 +9368,78 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object", - "properties": { - "version": { - "type": "integer" - }, - "created_at": { - "type": "integer", - "format": "int64" - }, - "updated_at": { - "type": "integer", - "format": "int64" - }, - "id": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "name": { - "type": "string" - }, - "status": { - "enum": ["ACTIVE", "REMOVED", "THROTTLED"], - "type": "string" - }, - "verify_jwt": { - "type": "boolean" - }, - "import_map": { - "type": "boolean" + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "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" + ] }, - "entrypoint_path": { - "type": "string" + { + "type": "string", + "enum": ["cd_default"] }, - "import_map_path": { - "type": "string" + { + "type": "string", + "enum": ["pitr_7", "pitr_14", "pitr_28"] }, - "compute_multiplier": { - "type": "number" + { + "type": "string", + "enum": ["ipv4_default"] } - }, - "required": [ - "version", - "created_at", - "updated_at", - "id", - "slug", - "name", - "status" + ] + }, + "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"] } } + } + }, + "responses": { + "200": { + "description": "" }, "403": { "description": "" }, "500": { - "description": "Failed to retrieve project's functions" + "description": "Failed to apply project addon" } }, - "tags": ["Edge Functions"], "security": [ { "bearer": [] @@ -8576,11 +9447,10 @@ ] } }, - "/v1/projects/{ref}/functions/{function_slug}": { - "get": { - "operationId": "v1-get-a-function", - "summary": "Retrieve a function", - "description": "Retrieves a function with the specified slug and project.", + "/v1/projects/{ref}/billing/addons/{addon_variant}": { + "delete": { + "operationId": "v1-remove-project-addon", + "summary": "Removes project addon", "parameters": [ { "name": "ref", @@ -8590,99 +9460,70 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, { - "name": "function_slug", + "name": "addon_variant", "required": true, "in": "path", - "description": "Function slug", - "schema": { - "pattern": "/^[A-Za-z0-9_-]+$/", - "type": "string" - } + "oneOf": [ + { + "type": "string", + "enum": [ + "ci_micro", + "ci_small", + "ci_medium", + "ci_large", + "ci_xlarge", + "ci_2xlarge", + "ci_4xlarge", + "ci_8xlarge", + "ci_12xlarge", + "ci_16xlarge" + ] + }, + { + "type": "string", + "enum": ["cd_default"] + }, + { + "type": "string", + "enum": ["pitr_7", "pitr_14", "pitr_28"] + }, + { + "type": "string", + "enum": ["ipv4_default"] + } + ], + "schema": {} } ], "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "version": { - "type": "integer" - }, - "created_at": { - "type": "integer", - "format": "int64" - }, - "updated_at": { - "type": "integer", - "format": "int64" - }, - "id": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "name": { - "type": "string" - }, - "status": { - "enum": ["ACTIVE", "REMOVED", "THROTTLED"], - "type": "string" - }, - "verify_jwt": { - "type": "boolean" - }, - "import_map": { - "type": "boolean" - }, - "entrypoint_path": { - "type": "string" - }, - "import_map_path": { - "type": "string" - }, - "compute_multiplier": { - "type": "number" - } - }, - "required": [ - "version", - "created_at", - "updated_at", - "id", - "slug", - "name", - "status" - ] - } - } - } + "description": "" }, "403": { "description": "" }, "500": { - "description": "Failed to retrieve function with given slug" + "description": "Failed to remove project addon" } }, - "tags": ["Edge Functions"], "security": [ { "bearer": [] } ] - }, - "patch": { - "operationId": "v1-update-a-function", - "summary": "Update a function", - "description": "Updates a function with the specified slug and project.", + } + }, + "/v1/projects/{ref}/advisors/performance": { + "get": { + "operationId": "getPerformanceAdvisors", + "summary": "Gets project performance advisors.", + "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.", + "deprecated": true, "parameters": [ { "name": "ref", @@ -8692,126 +9533,360 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "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" + ] + }, + "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"] + } + } + } }, + "403": { + "description": "" + } + }, + "tags": ["Projects Advisors"], + "security": [ { - "name": "function_slug", + "bearer": [] + } + ] + } + }, + "/v1/projects/{ref}/advisors/security": { + "get": { + "operationId": "getSecurityAdvisors", + "summary": "Gets project security advisors.", + "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.", + "deprecated": true, + "parameters": [ + { + "name": "ref", "required": true, "in": "path", - "description": "Function slug", + "description": "Project ref", "schema": { - "pattern": "/^[A-Za-z0-9_-]+$/", + "minLength": 20, + "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } - }, - { - "name": "slug", - "required": false, - "in": "query", - "schema": { - "pattern": "/^[A-Za-z0-9_-]+$/", - "type": "string" + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "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" + ] + }, + "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"] + } + } } }, + "403": { + "description": "" + } + }, + "tags": ["Projects Advisors"], + "security": [ { - "name": "name", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, + "bearer": [] + } + ] + } + }, + "/v1/projects/{ref}/analytics/endpoints/logs.all": { + "get": { + "operationId": "getLogs", + "summary": "Gets project's logs", + "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", + "parameters": [ { - "name": "verify_jwt", - "required": false, - "in": "query", + "name": "ref", + "required": true, + "in": "path", + "description": "Project ref", "schema": { - "type": "boolean" + "minLength": 20, + "maxLength": 20, + "pattern": "^[a-z]+$", + "type": "string" } }, { - "name": "import_map", + "name": "sql", "required": false, "in": "query", "schema": { - "type": "boolean" + "type": "string" } }, { - "name": "entrypoint_path", + "name": "iso_timestamp_start", "required": false, "in": "query", "schema": { + "format": "date-time", "type": "string" } }, { - "name": "import_map_path", + "name": "iso_timestamp_end", "required": false, "in": "query", "schema": { + "format": "date-time", "type": "string" } - }, - { - "name": "compute_multiplier", - "required": false, - "in": "query", - "schema": { - "minimum": 1, - "maximum": 4, - "type": "number" - } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "body": { - "type": "string" - }, - "verify_jwt": { - "type": "boolean" - }, - "compute_multiplier": { - "type": "number", - "minimum": 1, - "maximum": 4 - } - } - } - }, - "application/vnd.denoland.eszip": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "body": { - "type": "string" - }, - "verify_jwt": { - "type": "boolean" - }, - "compute_multiplier": { - "type": "number", - "minimum": 1, - "maximum": 4 - } - } - } - } - } - }, "responses": { "200": { "description": "", @@ -8820,77 +9895,84 @@ "schema": { "type": "object", "properties": { - "version": { - "type": "integer" - }, - "created_at": { - "type": "integer", - "format": "int64" - }, - "updated_at": { - "type": "integer", - "format": "int64" - }, - "id": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "name": { - "type": "string" - }, - "status": { - "enum": ["ACTIVE", "REMOVED", "THROTTLED"], - "type": "string" - }, - "verify_jwt": { - "type": "boolean" - }, - "import_map": { - "type": "boolean" - }, - "entrypoint_path": { - "type": "string" - }, - "import_map_path": { - "type": "string" + "result": { + "type": "array", + "items": {} }, - "compute_multiplier": { - "type": "number" + "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"] + } + ] } - }, - "required": [ - "version", - "created_at", - "updated_at", - "id", - "slug", - "name", - "status" - ] + } } } } }, "403": { "description": "" - }, - "500": { - "description": "Failed to update function with given slug" } }, - "tags": ["Edge Functions"], + "tags": ["Analytics"], "security": [ { "bearer": [] } ] - }, - "delete": { - "operationId": "v1-delete-a-function", - "summary": "Delete a function", - "description": "Deletes a function with the specified slug from the specified project.", + } + }, + "/v1/projects/{ref}/database/migrations": { + "get": { + "operationId": "v1-list-migrations", + "summary": "[Beta] List applied migration versions", + "description": "Only available to selected partner OAuth apps", "parameters": [ { "name": "ref", @@ -8900,44 +9982,53 @@ "schema": { "minLength": 20, "maxLength": 20, - "type": "string" - } - }, - { - "name": "function_slug", - "required": true, - "in": "path", - "description": "Function slug", - "schema": { - "pattern": "/^[A-Za-z0-9_-]+$/", + "pattern": "^[a-z]+$", "type": "string" } } ], "responses": { "200": { - "description": "" + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "version": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string" + } + }, + "required": ["version"] + } + } + } + } }, "403": { "description": "" }, "500": { - "description": "Failed to delete function with given slug" + "description": "Failed to list database migrations" } }, - "tags": ["Edge Functions"], + "tags": ["Database"], "security": [ { "bearer": [] } ] - } - }, - "/v1/projects/{ref}/functions/{function_slug}/body": { - "get": { - "operationId": "v1-get-a-function-body", - "summary": "Retrieve a function body", - "description": "Retrieves a function body for the specified slug and project.", + }, + "post": { + "operationId": "v1-apply-a-migration", + "summary": "[Beta] Apply a database migration", + "description": "Only available to selected partner OAuth apps", "parameters": [ { "name": "ref", @@ -8947,32 +10038,50 @@ "schema": { "minLength": 20, "maxLength": 20, - "type": "string" - } - }, - { - "name": "function_slug", - "required": true, - "in": "path", - "description": "Function slug", - "schema": { - "pattern": "/^[A-Za-z0-9_-]+$/", + "pattern": "^[a-z]+$", "type": "string" } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string" + } + }, + "required": ["query"] + } + } + } + }, "responses": { "200": { - "description": "" + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } }, "403": { "description": "" }, "500": { - "description": "Failed to retrieve function body with given slug" + "description": "Failed to apply database migration" } }, - "tags": ["Edge Functions"], + "tags": ["Database"], "security": [ { "bearer": [] @@ -8980,10 +10089,10 @@ ] } }, - "/v1/projects/{ref}/storage/buckets": { - "get": { - "operationId": "v1-list-all-buckets", - "summary": "Lists all buckets", + "/v1/projects/{ref}/database/query": { + "post": { + "operationId": "v1-run-a-query", + "summary": "[Beta] Run sql query", "parameters": [ { "name": "ref", @@ -8993,41 +10102,38 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "minLength": 1 + }, + "read_only": { + "type": "boolean" + } + }, + "required": ["query"] + } + } + } + }, "responses": { - "200": { + "201": { "description": "", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "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"] - } + "type": "object" } } } @@ -9036,10 +10142,10 @@ "description": "" }, "500": { - "description": "Failed to get list of buckets" + "description": "Failed to run sql query" } }, - "tags": ["Storage"], + "tags": ["Database"], "security": [ { "bearer": [] @@ -9047,10 +10153,10 @@ ] } }, - "/v1/projects/{ref}/config/auth/sso/providers": { + "/v1/projects/{ref}/database/webhooks/enable": { "post": { - "operationId": "v1-create-a-sso-provider", - "summary": "Creates a new SSO provider", + "operationId": "v1-enable-database-webhook", + "summary": "[Beta] Enables Database Webhooks on the project", "parameters": [ { "name": "ref", @@ -9060,203 +10166,107 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "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": { - "default": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, - "array": { - "type": "boolean" - } - } - } - } - }, - "required": ["keys"] - } - }, - "required": ["type"] - } - } + "responses": { + "201": { + "description": "" + }, + "403": { + "description": "" + }, + "500": { + "description": "Failed to enable Database Webhooks on the project" } }, + "tags": ["Database"], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/v1/projects/{ref}/database/context": { + "get": { + "operationId": "getDatabaseMetadata", + "summary": "Gets database metadata for the given project.", + "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.", + "deprecated": true, + "parameters": [ + { + "name": "ref", + "required": true, + "in": "path", + "description": "Project ref", + "schema": { + "minLength": 20, + "maxLength": 20, + "pattern": "^[a-z]+$", + "type": "string" + } + } + ], "responses": { - "201": { + "200": { "description": "", "content": { "application/json": { "schema": { "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": { - "default": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, - "array": { - "type": "boolean" - } - } - } - } - }, - "required": ["keys"] - } - }, - "required": ["id", "entity_id"] - }, - "domains": { + "databases": { "type": "array", "items": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "domain": { - "type": "string" - }, - "created_at": { + "name": { "type": "string" }, - "updated_at": { - "type": "string" + "schemas": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + }, + "required": ["name"], + "additionalProperties": true + } } }, - "required": ["id"] + "required": ["name", "schemas"], + "additionalProperties": true } - }, - "created_at": { - "type": "string" - }, - "updated_at": { - "type": "string" } }, - "required": ["id"] + "required": ["databases"] } } } }, "403": { "description": "" - }, - "404": { - "description": "SAML 2.0 support is not enabled for this project" } }, - "tags": ["Auth"], + "tags": ["Database"], "security": [ { "bearer": [] } ] - }, + } + }, + "/v1/projects/{ref}/functions": { "get": { - "operationId": "v1-list-all-sso-provider", - "summary": "Lists all SSO providers", + "operationId": "v1-list-all-functions", + "summary": "List all functions", + "description": "Returns all functions you've previously added to the specified project.", "parameters": [ { "name": "ref", @@ -9266,6 +10276,7 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } } @@ -9276,109 +10287,55 @@ "content": { "application/json": { "schema": { - "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": { - "default": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, - "array": { - "type": "boolean" - } - } - } - } - }, - "required": ["keys"] - } - }, - "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"] + "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" + }, + "updated_at": { + "type": "integer" + }, + "verify_jwt": { + "type": "boolean" + }, + "import_map": { + "type": "boolean" + }, + "entrypoint_path": { + "type": "string" + }, + "import_map_path": { + "type": "string" } - } - }, - "required": ["items"] + }, + "required": [ + "id", + "slug", + "name", + "status", + "version", + "created_at", + "updated_at" + ] + } } } } @@ -9386,22 +10343,22 @@ "403": { "description": "" }, - "404": { - "description": "SAML 2.0 support is not enabled for this project" + "500": { + "description": "Failed to retrieve project's functions" } }, - "tags": ["Auth"], + "tags": ["Edge Functions"], "security": [ { "bearer": [] } ] - } - }, - "/v1/projects/{ref}/config/auth/sso/providers/{provider_id}": { - "get": { - "operationId": "v1-get-a-sso-provider", - "summary": "Gets a SSO provider by its UUID", + }, + "post": { + "operationId": "v1-create-a-function", + "summary": "Create a function", + "description": "This endpoint is deprecated - use the deploy endpoint. Creates a function and adds it to the specified project.", + "deprecated": true, "parameters": [ { "name": "ref", @@ -9411,20 +10368,62 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, { - "name": "provider_id", - "required": true, - "in": "path", + "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", + "schema": { + "type": "string" + } + }, + { + "name": "import_map", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "entrypoint_path", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "import_map_path", + "required": false, + "in": "query", "schema": { "type": "string" } } ], "responses": { - "200": { + "201": { "description": "", "content": { "application/json": { @@ -9434,95 +10433,47 @@ "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": { - "default": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, - "array": { - "type": "boolean" - } - } - } - } - }, - "required": ["keys"] - } - }, - "required": ["id", "entity_id"] + "slug": { + "type": "string" }, - "domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "domain": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "updated_at": { - "type": "string" - } - }, - "required": ["id"] - } + "name": { + "type": "string" + }, + "status": { + "type": "string", + "enum": ["ACTIVE", "REMOVED", "THROTTLED"] + }, + "version": { + "type": "integer" }, "created_at": { - "type": "string" + "type": "integer" }, "updated_at": { + "type": "integer" + }, + "verify_jwt": { + "type": "boolean" + }, + "import_map": { + "type": "boolean" + }, + "entrypoint_path": { + "type": "string" + }, + "import_map_path": { "type": "string" } }, - "required": ["id"] + "required": [ + "id", + "slug", + "name", + "status", + "version", + "created_at", + "updated_at" + ] } } } @@ -9530,11 +10481,11 @@ "403": { "description": "" }, - "404": { - "description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist" + "500": { + "description": "Failed to create project's function" } }, - "tags": ["Auth"], + "tags": ["Edge Functions"], "security": [ { "bearer": [] @@ -9542,8 +10493,9 @@ ] }, "put": { - "operationId": "v1-update-a-sso-provider", - "summary": "Updates a SSO provider by its UUID", + "operationId": "v1-bulk-update-functions", + "summary": "Bulk update functions", + "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.", "parameters": [ { "name": "ref", @@ -9553,14 +10505,7 @@ "schema": { "minLength": 20, "maxLength": 20, - "type": "string" - } - }, - { - "name": "provider_id", - "required": true, - "in": "path", - "schema": { + "pattern": "^[a-z]+$", "type": "string" } } @@ -9570,62 +10515,9 @@ "content": { "application/json": { "schema": { - "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": { - "default": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, - "array": { - "type": "boolean" - } - } - } - } - }, - "required": ["keys"] - } + "type": "array", + "items": { + "type": "string" } } } @@ -9639,70 +10531,7 @@ "schema": { "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": { - "default": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, - "array": { - "type": "boolean" - } - } - } - } - }, - "required": ["keys"] - } - }, - "required": ["id", "entity_id"] - }, - "domains": { + "functions": { "type": "array", "items": { "type": "object", @@ -9710,27 +10539,51 @@ "id": { "type": "string" }, - "domain": { + "slug": { "type": "string" }, - "created_at": { + "name": { "type": "string" }, + "status": { + "type": "string", + "enum": ["ACTIVE", "REMOVED", "THROTTLED"] + }, + "version": { + "type": "integer" + }, + "created_at": { + "type": "integer" + }, "updated_at": { + "type": "integer" + }, + "verify_jwt": { + "type": "boolean" + }, + "import_map": { + "type": "boolean" + }, + "entrypoint_path": { + "type": "string" + }, + "import_map_path": { "type": "string" } }, - "required": ["id"] + "required": [ + "id", + "slug", + "name", + "status", + "version", + "created_at", + "updated_at" + ] } - }, - "created_at": { - "type": "string" - }, - "updated_at": { - "type": "string" } }, - "required": ["id"] + "required": ["functions"] } } } @@ -9738,20 +10591,23 @@ "403": { "description": "" }, - "404": { - "description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist" + "500": { + "description": "Failed to update functions" } }, - "tags": ["Auth"], + "tags": ["Edge Functions"], "security": [ { "bearer": [] } ] - }, - "delete": { - "operationId": "v1-delete-a-sso-provider", - "summary": "Removes a SSO provider by its UUID", + } + }, + "/v1/projects/{ref}/functions/deploy": { + "post": { + "operationId": "v1-deploy-a-function", + "summary": "Deploy a function", + "description": "A new endpoint to deploy functions. It will create if function does not exist.", "parameters": [ { "name": "ref", @@ -9761,20 +10617,30 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } }, { - "name": "provider_id", - "required": true, - "in": "path", + "name": "slug", + "required": false, + "in": "query", + "schema": { + "pattern": "^[A-Za-z0-9_-]+$", + "type": "string" + } + }, + { + "name": "bundleOnly", + "required": false, + "in": "query", "schema": { "type": "string" } } ], "responses": { - "200": { + "201": { "description": "", "content": { "application/json": { @@ -9784,95 +10650,39 @@ "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": { - "default": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, - "array": { - "type": "boolean" - } - } - } - } - }, - "required": ["keys"] - } - }, - "required": ["id", "entity_id"] + "slug": { + "type": "string" }, - "domains": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "domain": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "updated_at": { - "type": "string" - } - }, - "required": ["id"] - } + "name": { + "type": "string" + }, + "status": { + "type": "string", + "enum": ["ACTIVE", "REMOVED", "THROTTLED"] + }, + "version": { + "type": "integer" }, "created_at": { - "type": "string" + "type": "integer" }, "updated_at": { + "type": "integer" + }, + "verify_jwt": { + "type": "boolean" + }, + "import_map": { + "type": "boolean" + }, + "entrypoint_path": { + "type": "string" + }, + "import_map_path": { "type": "string" } }, - "required": ["id"] + "required": ["id", "slug", "name", "status", "version"] } } } @@ -9880,11 +10690,11 @@ "403": { "description": "" }, - "404": { - "description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist" + "500": { + "description": "Failed to deploy function" } }, - "tags": ["Auth"], + "tags": ["Edge Functions"], "security": [ { "bearer": [] @@ -9892,10 +10702,11 @@ ] } }, - "/v1/projects/{ref}/database/backups": { + "/v1/projects/{ref}/functions/{function_slug}": { "get": { - "operationId": "v1-list-all-backups", - "summary": "Lists all backups", + "operationId": "v1-get-a-function", + "summary": "Retrieve a function", + "description": "Retrieves a function with the specified slug and project.", "parameters": [ { "name": "ref", @@ -9905,6 +10716,17 @@ "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" } } @@ -9917,82 +10739,72 @@ "schema": { "type": "object", "properties": { - "region": { + "id": { "type": "string" }, - "walg_enabled": { + "slug": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "string", + "enum": ["ACTIVE", "REMOVED", "THROTTLED"] + }, + "version": { + "type": "integer" + }, + "created_at": { + "type": "integer" + }, + "updated_at": { + "type": "integer" + }, + "verify_jwt": { "type": "boolean" }, - "pitr_enabled": { + "import_map": { "type": "boolean" }, - "backups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "COMPLETED", - "FAILED", - "PENDING", - "REMOVED", - "ARCHIVED", - "CANCELLED" - ] - }, - "is_physical_backup": { - "type": "boolean" - }, - "inserted_at": { - "type": "string" - } - }, - "required": ["status", "is_physical_backup", "inserted_at"] - } + "entrypoint_path": { + "type": "string" }, - "physical_backup_data": { - "type": "object", - "properties": { - "earliest_physical_backup_date_unix": { - "type": "integer", - "format": "int64" - }, - "latest_physical_backup_date_unix": { - "type": "integer", - "format": "int64" - } - } + "import_map_path": { + "type": "string" } }, "required": [ - "region", - "walg_enabled", - "pitr_enabled", - "backups", - "physical_backup_data" + "id", + "slug", + "name", + "status", + "version", + "created_at", + "updated_at" ] } } } }, + "403": { + "description": "" + }, "500": { - "description": "Failed to get backups" + "description": "Failed to retrieve function with given slug" } }, - "tags": ["Database"], + "tags": ["Edge Functions"], "security": [ { "bearer": [] } ] - } - }, - "/v1/projects/{ref}/database/backups/restore-pitr": { - "post": { - "operationId": "v1-restore-pitr-backup", - "summary": "Restores a PITR backup for a database", + }, + "patch": { + "operationId": "v1-update-a-function", + "summary": "Update a function", + "description": "Updates a function with the specified slug and project.", "parameters": [ { "name": "ref", @@ -10002,105 +10814,65 @@ "schema": { "minLength": 20, "maxLength": 20, + "pattern": "^[a-z]+$", "type": "string" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "recovery_time_target_unix": { - "type": "integer", - "minimum": 0, - "format": "int64" - } - }, - "required": ["recovery_time_target_unix"] - } - } - } - }, - "responses": { - "201": { - "description": "" - } - }, - "tags": ["Database"], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/v1/organizations/{slug}/members": { - "get": { - "operationId": "v1-list-organization-members", - "summary": "List members of an organization", - "parameters": [ + }, { - "name": "slug", + "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": { - "type": "array", - "items": { - "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"] - } - } - } + }, + { + "name": "slug", + "required": false, + "in": "query", + "schema": { + "pattern": "^[A-Za-z0-9_-]+$", + "type": "string" } - } - }, - "tags": ["Organizations"], - "security": [ + }, { - "bearer": [] - } - ] - } - }, - "/v1/organizations/{slug}": { - "get": { - "operationId": "v1-get-an-organization", - "summary": "Gets information about the organization", - "parameters": [ + "name": "name", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, { - "name": "slug", - "required": true, - "in": "path", + "name": "verify_jwt", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "import_map", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "entrypoint_path", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "import_map_path", + "required": false, + "in": "query", "schema": { "type": "string" } @@ -10114,1295 +10886,2341 @@ "schema": { "type": "object", "properties": { - "plan": { + "id": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { "type": "string", - "enum": ["free", "pro", "team", "enterprise"] + "enum": ["ACTIVE", "REMOVED", "THROTTLED"] }, - "opt_in_tags": { - "type": "array", - "items": { - "type": "string", - "enum": ["AI_SQL_GENERATOR_OPT_IN"] - } + "version": { + "type": "integer" }, - "allowed_release_channels": { - "type": "array", - "items": { - "type": "string", - "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] - } + "created_at": { + "type": "integer" }, - "id": { + "updated_at": { + "type": "integer" + }, + "verify_jwt": { + "type": "boolean" + }, + "import_map": { + "type": "boolean" + }, + "entrypoint_path": { "type": "string" }, - "name": { + "import_map_path": { "type": "string" } }, - "required": ["opt_in_tags", "allowed_release_channels", "id", "name"] + "required": [ + "id", + "slug", + "name", + "status", + "version", + "created_at", + "updated_at" + ] } } } + }, + "403": { + "description": "" + }, + "500": { + "description": "Failed to update function with given slug" } }, - "tags": ["Organizations"], + "tags": ["Edge Functions"], "security": [ { "bearer": [] } ] - } - } - }, - "components": { - "securitySchemes": { - "bearer": { - "scheme": "bearer", - "bearerFormat": "JWT", - "type": "http" - } - }, - "schemas": { - "BranchDetailResponse": { - "type": "object", - "properties": { - "db_port": { - "type": "integer" - }, - "ref": { - "type": "string" - }, - "postgres_version": { - "type": "string" - }, - "postgres_engine": { - "type": "string" - }, - "release_channel": { - "type": "string" - }, - "status": { - "enum": [ - "ACTIVE_HEALTHY", - "ACTIVE_UNHEALTHY", - "COMING_UP", - "GOING_DOWN", - "INACTIVE", - "INIT_FAILED", - "REMOVED", - "RESTARTING", - "UNKNOWN", - "UPGRADING", - "PAUSING", - "RESTORING", - "RESTORE_FAILED", - "PAUSE_FAILED", - "RESIZING" - ], - "type": "string" - }, - "db_host": { - "type": "string" + }, + "delete": { + "operationId": "v1-delete-a-function", + "summary": "Delete a function", + "description": "Deletes a function with the specified slug from the specified project.", + "parameters": [ + { + "name": "ref", + "required": true, + "in": "path", + "description": "Project ref", + "schema": { + "minLength": 20, + "maxLength": 20, + "pattern": "^[a-z]+$", + "type": "string" + } }, - "db_user": { - "type": "string" + { + "name": "function_slug", + "required": true, + "in": "path", + "description": "Function slug", + "schema": { + "pattern": "^[A-Za-z0-9_-]+$", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" }, - "db_pass": { - "type": "string" + "403": { + "description": "" }, - "jwt_secret": { - "type": "string" + "500": { + "description": "Failed to delete function with given slug" } }, - "required": [ - "db_port", - "ref", - "postgres_version", - "postgres_engine", - "release_channel", - "status", - "db_host" + "tags": ["Edge Functions"], + "security": [ + { + "bearer": [] + } ] - }, - "UpdateBranchBody": { - "type": "object", - "properties": { - "reset_on_push": { - "type": "boolean", - "deprecated": true, - "description": "This field is deprecated and will be ignored. Use v1-reset-a-branch endpoint directly instead." - }, - "branch_name": { - "type": "string" - }, - "git_branch": { - "type": "string" - }, - "persistent": { - "type": "boolean" - }, - "status": { - "enum": [ - "CREATING_PROJECT", - "RUNNING_MIGRATIONS", - "MIGRATIONS_PASSED", - "MIGRATIONS_FAILED", - "FUNCTIONS_DEPLOYED", - "FUNCTIONS_FAILED" - ], - "type": "string" - } - } - }, - "BranchResponse": { - "type": "object", - "properties": { - "pr_number": { - "type": "integer", - "format": "int32" - }, - "latest_check_run_id": { - "type": "number", - "deprecated": true, - "description": "This field is deprecated and will not be populated." - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "project_ref": { - "type": "string" - }, - "parent_project_ref": { - "type": "string" - }, - "is_default": { - "type": "boolean" - }, - "git_branch": { - "type": "string" - }, - "persistent": { - "type": "boolean" + } + }, + "/v1/projects/{ref}/functions/{function_slug}/body": { + "get": { + "operationId": "v1-get-a-function-body", + "summary": "Retrieve a function body", + "description": "Retrieves a function body for the specified slug and project.", + "parameters": [ + { + "name": "ref", + "required": true, + "in": "path", + "description": "Project ref", + "schema": { + "minLength": 20, + "maxLength": 20, + "pattern": "^[a-z]+$", + "type": "string" + } }, - "status": { - "enum": [ - "CREATING_PROJECT", - "RUNNING_MIGRATIONS", - "MIGRATIONS_PASSED", - "MIGRATIONS_FAILED", - "FUNCTIONS_DEPLOYED", - "FUNCTIONS_FAILED" - ], - "type": "string" + { + "name": "function_slug", + "required": true, + "in": "path", + "description": "Function slug", + "schema": { + "pattern": "^[A-Za-z0-9_-]+$", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" }, - "created_at": { - "type": "string" + "403": { + "description": "" }, - "updated_at": { - "type": "string" + "500": { + "description": "Failed to retrieve function body with given slug" } }, - "required": [ - "id", - "name", - "project_ref", - "parent_project_ref", - "is_default", - "persistent", - "status", - "created_at", - "updated_at" - ] - }, - "BranchDeleteResponse": { - "type": "object", - "properties": { - "message": { - "type": "string" + "tags": ["Edge Functions"], + "security": [ + { + "bearer": [] } - }, - "required": ["message"] - }, - "BranchUpdateResponse": { - "type": "object", - "properties": { - "workflow_run_id": { - "type": "string" - }, - "message": { - "type": "string" + ] + } + }, + "/v1/projects/{ref}/storage/buckets": { + "get": { + "operationId": "v1-list-all-buckets", + "summary": "Lists all buckets", + "parameters": [ + { + "name": "ref", + "required": true, + "in": "path", + "description": "Project ref", + "schema": { + "minLength": 20, + "maxLength": 20, + "pattern": "^[a-z]+$", + "type": "string" + } } - }, - "required": ["workflow_run_id", "message"] - }, - "V1DatabaseResponse": { - "type": "object", - "properties": { - "host": { - "type": "string", - "description": "Database host" - }, - "version": { - "type": "string", - "description": "Database version" + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "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"] + } + } + } + } }, - "postgres_engine": { - "type": "string", - "description": "Database engine" + "403": { + "description": "" }, - "release_channel": { - "type": "string", - "description": "Release channel" + "500": { + "description": "Failed to get list of buckets" } }, - "required": ["host", "version", "postgres_engine", "release_channel"] - }, - "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" - }, - "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"] - }, - "status": { - "enum": [ - "ACTIVE_HEALTHY", - "ACTIVE_UNHEALTHY", - "COMING_UP", - "GOING_DOWN", - "INACTIVE", - "INIT_FAILED", - "REMOVED", - "RESTARTING", - "UNKNOWN", - "UPGRADING", - "PAUSING", - "RESTORING", - "RESTORE_FAILED", - "PAUSE_FAILED", - "RESIZING" - ], - "type": "string" + "tags": ["Storage"], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/v1/projects/{ref}/config/auth/sso/providers": { + "post": { + "operationId": "v1-create-a-sso-provider", + "summary": "Creates a new 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": { + "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"] + } + }, + "required": ["type"] + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "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"] + } + }, + "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"] + } + } + } + }, + "403": { + "description": "" + }, + "404": { + "description": "SAML 2.0 support is not enabled for this project" + } + }, + "tags": ["Auth"], + "security": [ + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "v1-list-all-sso-provider", + "summary": "Lists all SSO providers", + "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": "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"] + } + }, + "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"] + } + } + } + }, + "403": { + "description": "" + }, + "404": { + "description": "SAML 2.0 support is not enabled for this project" + } + }, + "tags": ["Auth"], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/v1/projects/{ref}/config/auth/sso/providers/{provider_id}": { + "get": { + "operationId": "v1-get-a-sso-provider", + "summary": "Gets a SSO provider by its UUID", + "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": { + "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"] + } + }, + "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"] + } + } + } + }, + "403": { + "description": "" + }, + "404": { + "description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist" + } + }, + "tags": ["Auth"], + "security": [ + { + "bearer": [] + } + ] + }, + "put": { + "operationId": "v1-update-a-sso-provider", + "summary": "Updates a SSO provider by its UUID", + "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": { + "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"] + } + } + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "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"] + } + }, + "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"] + } + } + } + }, + "403": { + "description": "" + }, + "404": { + "description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist" } }, - "required": ["id", "organization_id", "name", "region", "created_at", "database", "status"] + "tags": ["Auth"], + "security": [ + { + "bearer": [] + } + ] }, - "V1CreateProjectBodyDto": { - "type": "object", - "properties": { - "db_pass": { - "type": "string", - "description": "Database password" - }, - "name": { - "type": "string", - "description": "Name of your project" + "delete": { + "operationId": "v1-delete-a-sso-provider", + "summary": "Removes a SSO provider by its UUID", + "parameters": [ + { + "name": "ref", + "required": true, + "in": "path", + "description": "Project ref", + "schema": { + "minLength": 20, + "maxLength": 20, + "pattern": "^[a-z]+$", + "type": "string" + } }, - "organization_id": { - "type": "string", - "description": "Slug of your organization" + { + "name": "provider_id", + "required": true, + "in": "path", + "schema": { + "format": "uuid", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "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"] + } + }, + "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"] + } + } + } }, - "plan": { - "type": "string", - "enum": ["free", "pro"], - "deprecated": true, - "description": "Subscription Plan is now set on organization level and is ignored in this request" + "403": { + "description": "" }, - "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" - ] + "404": { + "description": "Either SAML 2.0 was not enabled for this project, or the provider does not exist" + } + }, + "tags": ["Auth"], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/v1/projects/{ref}/database/backups": { + "get": { + "operationId": "v1-list-all-backups", + "summary": "Lists 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": { + "type": "object", + "properties": { + "region": { + "type": "string" + }, + "walg_enabled": { + "type": "boolean" + }, + "pitr_enabled": { + "type": "boolean" + }, + "backups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "COMPLETED", + "FAILED", + "PENDING", + "REMOVED", + "ARCHIVED", + "CANCELLED" + ] + }, + "is_physical_backup": { + "type": "boolean" + }, + "inserted_at": { + "type": "string" + } + }, + "required": ["status", "is_physical_backup", "inserted_at"] + } + }, + "physical_backup_data": { + "type": "object", + "properties": { + "earliest_physical_backup_date_unix": { + "type": "integer", + "format": "int64" + }, + "latest_physical_backup_date_unix": { + "type": "integer", + "format": "int64" + } + } + } + }, + "required": [ + "region", + "walg_enabled", + "pitr_enabled", + "backups", + "physical_backup_data" + ] + } + } + } }, - "kps_enabled": { - "type": "boolean", - "deprecated": true, - "description": "This field is deprecated and is ignored in this request" + "403": { + "description": "" }, - "desired_instance_size": { - "type": "string", - "enum": [ - "micro", - "small", - "medium", - "large", - "xlarge", - "2xlarge", - "4xlarge", - "8xlarge", - "12xlarge", - "16xlarge" - ] + "500": { + "description": "Failed to get backups" + } + }, + "tags": ["Database"], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/v1/projects/{ref}/database/backups/restore-pitr": { + "post": { + "operationId": "v1-restore-pitr-backup", + "summary": "Restores a PITR backup for a database", + "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": "object", + "properties": { + "recovery_time_target_unix": { + "type": "integer", + "minimum": 0, + "format": "int64" + } + }, + "required": ["recovery_time_target_unix"] + } + } + } + }, + "responses": { + "201": { + "description": "" }, - "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" + "403": { + "description": "" + } + }, + "tags": ["Database"], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/v1/organizations/{slug}/members": { + "get": { + "operationId": "v1-list-organization-members", + "summary": "List members of an organization", + "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": { + "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"] + } + } + } + } }, - "release_channel": { - "type": "string", - "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"], - "description": "Release channel. If not provided, GA will be used." + "403": { + "description": "" + } + }, + "tags": ["Organizations"], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/v1/organizations/{slug}": { + "get": { + "operationId": "v1-get-an-organization", + "summary": "Gets information about the organization", + "parameters": [ + { + "name": "slug", + "required": true, + "in": "path", + "description": "Organization slug", + "schema": { + "pattern": "^[\\w-]+$", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "plan": { + "type": "string", + "enum": ["free", "pro", "team", "enterprise"] + }, + "opt_in_tags": { + "type": "array", + "items": { + "type": "string", + "enum": ["AI_SQL_GENERATOR_OPT_IN"] + } + }, + "allowed_release_channels": { + "type": "array", + "items": { + "type": "string", + "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] + } + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": ["opt_in_tags", "allowed_release_channels", "id", "name"] + } + } + } }, - "postgres_engine": { - "type": "string", - "enum": ["15", "17-oriole"], - "description": "Postgres engine version. If not provided, the latest version will be used." + "403": { + "description": "" } }, - "required": ["db_pass", "name", "organization_id", "region"], - "additionalProperties": false - }, - "V1ProjectResponse": { + "tags": ["Organizations"], + "security": [ + { + "bearer": [] + } + ] + } + } + }, + "components": { + "securitySchemes": { + "bearer": { + "scheme": "bearer", + "bearerFormat": "JWT", + "type": "http" + } + }, + "schemas": { + "BranchDetailResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "description": "Id of your project" - }, - "organization_id": { - "type": "string", - "description": "Slug of your organization" + "ref": { + "type": "string" }, - "name": { - "type": "string", - "description": "Name of your project" + "postgres_version": { + "type": "string" }, - "region": { - "type": "string", - "description": "Region of your project", - "example": "us-east-1" + "postgres_engine": { + "type": "string" }, - "created_at": { - "type": "string", - "description": "Creation timestamp", - "example": "2023-03-29T16:32:59Z" + "release_channel": { + "type": "string" }, "status": { + "type": "string", "enum": [ + "INACTIVE", "ACTIVE_HEALTHY", "ACTIVE_UNHEALTHY", "COMING_UP", + "UNKNOWN", "GOING_DOWN", - "INACTIVE", "INIT_FAILED", "REMOVED", - "RESTARTING", - "UNKNOWN", + "RESTORING", "UPGRADING", "PAUSING", - "RESTORING", "RESTORE_FAILED", + "RESTARTING", "PAUSE_FAILED", "RESIZING" - ], - "type": "string" - } - }, - "required": ["id", "organization_id", "name", "region", "created_at", "status"] - }, - "OrganizationResponseV1": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": ["id", "name"] - }, - "CreateOrganizationV1Dto": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - }, - "required": ["name"], - "additionalProperties": false - }, - "OAuthTokenBody": { - "type": "object", - "properties": { - "grant_type": { - "enum": ["authorization_code", "refresh_token"], - "type": "string" - }, - "client_id": { - "type": "string" + ] }, - "client_secret": { + "db_host": { "type": "string" }, - "code": { - "type": "string" + "db_port": { + "type": "number" }, - "code_verifier": { + "db_user": { "type": "string" }, - "redirect_uri": { + "db_pass": { "type": "string" }, - "refresh_token": { + "jwt_secret": { "type": "string" } }, - "required": ["grant_type", "client_id", "client_secret"] + "required": [ + "ref", + "postgres_version", + "postgres_engine", + "release_channel", + "status", + "db_host", + "db_port" + ] }, - "OAuthTokenResponse": { + "UpdateBranchBody": { "type": "object", "properties": { - "expires_in": { - "type": "integer", - "format": "int64" - }, - "token_type": { - "type": "string", - "enum": ["Bearer"] - }, - "access_token": { - "type": "string" - }, - "refresh_token": { + "branch_name": { "type": "string" - } - }, - "required": ["expires_in", "token_type", "access_token", "refresh_token"] - }, - "OAuthRevokeTokenBodyDto": { - "type": "object", - "properties": { - "client_id": { - "type": "string", - "format": "uuid" }, - "client_secret": { + "git_branch": { "type": "string" }, - "refresh_token": { - "type": "string" - } - }, - "required": ["client_id", "client_secret", "refresh_token"], - "additionalProperties": false - }, - "SnippetProject": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" + "reset_on_push": { + "type": "boolean", + "description": "This field is deprecated and will be ignored. Use v1-reset-a-branch endpoint directly instead.", + "deprecated": true }, - "name": { - "type": "string" - } - }, - "required": ["id", "name"] - }, - "SnippetUser": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" + "persistent": { + "type": "boolean" }, - "username": { - "type": "string" + "status": { + "type": "string", + "enum": [ + "CREATING_PROJECT", + "RUNNING_MIGRATIONS", + "MIGRATIONS_PASSED", + "MIGRATIONS_FAILED", + "FUNCTIONS_DEPLOYED", + "FUNCTIONS_FAILED" + ] } - }, - "required": ["id", "username"] + } }, - "SnippetMeta": { + "BranchResponse": { "type": "object", "properties": { "id": { "type": "string" }, - "inserted_at": { + "name": { "type": "string" }, - "updated_at": { + "project_ref": { "type": "string" }, - "type": { - "type": "string", - "enum": ["sql"] + "parent_project_ref": { + "type": "string" }, - "visibility": { - "type": "string", - "enum": ["user", "project", "org", "public"] + "is_default": { + "type": "boolean" }, - "name": { + "git_branch": { "type": "string" }, - "description": { - "type": "string" + "pr_number": { + "type": "integer", + "format": "int32" }, - "project": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": ["id", "name"] + "latest_check_run_id": { + "type": "number", + "description": "This field is deprecated and will not be populated.", + "deprecated": true }, - "owner": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "username": { - "type": "string" - } - }, - "required": ["id", "username"] + "persistent": { + "type": "boolean" }, - "updated_by": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "username": { - "type": "string" - } - }, - "required": ["id", "username"] + "status": { + "type": "string", + "enum": [ + "CREATING_PROJECT", + "RUNNING_MIGRATIONS", + "MIGRATIONS_PASSED", + "MIGRATIONS_FAILED", + "FUNCTIONS_DEPLOYED", + "FUNCTIONS_FAILED" + ] + }, + "created_at": { + "type": "string" + }, + "updated_at": { + "type": "string" } }, "required": [ "id", - "inserted_at", - "updated_at", - "type", - "visibility", "name", - "project", - "owner", - "updated_by" + "project_ref", + "parent_project_ref", + "is_default", + "persistent", + "status", + "created_at", + "updated_at" ] }, - "SnippetList": { + "BranchDeleteResponse": { "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" - }, - "project": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": ["id", "name"] - }, - "owner": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "username": { - "type": "string" - } - }, - "required": ["id", "username"] - }, - "updated_by": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "username": { - "type": "string" - } - }, - "required": ["id", "username"] - } - }, - "required": [ - "id", - "inserted_at", - "updated_at", - "type", - "visibility", - "name", - "project", - "owner", - "updated_by" - ] - } - }, - "cursor": { - "type": "string" + "message": { + "type": "string", + "enum": ["ok"] } }, - "required": ["data"] + "required": ["message"] }, - "SnippetContent": { + "BranchActionBody": { "type": "object", "properties": { - "favorite": { - "type": "boolean" - }, - "schema_version": { + "migration_version": { "type": "string" - }, - "sql": { + } + } + }, + "BranchUpdateResponse": { + "type": "object", + "properties": { + "workflow_run_id": { "type": "string" + }, + "message": { + "type": "string", + "enum": ["ok"] } }, - "required": ["favorite", "schema_version", "sql"] + "required": ["workflow_run_id", "message"] }, - "SnippetResponse": { + "V1DatabaseResponse": { "type": "object", "properties": { - "id": { - "type": "string" + "host": { + "type": "string", + "description": "Database host" }, - "inserted_at": { - "type": "string" + "version": { + "type": "string", + "description": "Database version" }, - "updated_at": { - "type": "string" + "postgres_engine": { + "type": "string", + "description": "Database engine" }, - "type": { + "release_channel": { "type": "string", - "enum": ["sql"] + "description": "Release channel" + } + }, + "required": ["host", "version", "postgres_engine", "release_channel"] + }, + "V1ProjectWithDatabaseResponse": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id of your project" }, - "visibility": { - "enum": ["user", "project", "org", "public"], - "type": "string" + "organization_id": { + "type": "string", + "description": "Slug of your organization" }, "name": { - "type": "string" - }, - "description": { - "type": "string" + "type": "string", + "description": "Name of your project" }, - "project": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" - } - }, - "required": ["id", "name"] + "region": { + "type": "string", + "description": "Region of your project", + "example": "us-east-1" }, - "owner": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "username": { - "type": "string" - } - }, - "required": ["id", "username"] + "created_at": { + "type": "string", + "description": "Creation timestamp", + "example": "2023-03-29T16:32:59Z" }, - "updated_by": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "username": { - "type": "string" - } - }, - "required": ["id", "username"] + "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" + ] }, - "content": { + "database": { "type": "object", "properties": { - "favorite": { - "type": "boolean" + "host": { + "type": "string", + "description": "Database host" }, - "schema_version": { - "type": "string" + "version": { + "type": "string", + "description": "Database version" }, - "sql": { - "type": "string" + "postgres_engine": { + "type": "string", + "description": "Database engine" + }, + "release_channel": { + "type": "string", + "description": "Release channel" } }, - "required": ["favorite", "schema_version", "sql"] - } - }, - "required": [ - "id", - "inserted_at", - "updated_at", - "type", - "visibility", - "name", - "project", - "owner", - "updated_by", - "content" - ] - }, - "ApiKeySecretJWTTemplate": { - "type": "object", - "properties": { - "role": { - "type": "string" + "required": ["host", "version", "postgres_engine", "release_channel"] } }, - "required": ["role"] + "required": ["id", "organization_id", "name", "region", "created_at", "status", "database"] }, - "ApiKeyResponse": { + "V1CreateProjectBodyDto": { "type": "object", "properties": { - "type": { - "nullable": true, + "db_pass": { "type": "string", - "enum": ["publishable", "secret", "legacy"] + "description": "Database password" }, "name": { - "type": "string" - }, - "api_key": { - "type": "string" - }, - "id": { "type": "string", - "nullable": true + "description": "Name of your project" }, - "prefix": { + "organization_id": { "type": "string", - "nullable": true + "description": "Slug of your organization" }, - "description": { + "plan": { "type": "string", - "nullable": true + "enum": ["free", "pro"], + "deprecated": true, + "description": "Subscription Plan is now set on organization level and is ignored in this request" }, - "hash": { + "region": { "type": "string", - "nullable": true - }, - "secret_jwt_template": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "role": { - "type": "string" - } - }, - "required": ["role"] - } + "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" ] }, - "inserted_at": { + "kps_enabled": { + "type": "boolean", + "deprecated": true, + "description": "This field is deprecated and is ignored in this request" + }, + "desired_instance_size": { "type": "string", - "nullable": true + "enum": [ + "micro", + "small", + "medium", + "large", + "xlarge", + "2xlarge", + "4xlarge", + "8xlarge", + "12xlarge", + "16xlarge" + ] }, - "updated_at": { + "template_url": { "type": "string", - "nullable": true + "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": ["name", "api_key"] + "required": ["db_pass", "name", "organization_id", "region"], + "additionalProperties": false, + "hideDefinitions": ["release_channel", "postgres_engine"] }, - "CreateApiKeyBody": { + "V1ProjectResponse": { "type": "object", "properties": { - "type": { - "enum": ["publishable", "secret"], - "type": "string" + "id": { + "type": "string", + "description": "Id of your project" }, - "description": { + "organization_id": { "type": "string", - "nullable": true + "description": "Slug of your organization" }, - "secret_jwt_template": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "role": { - "type": "string" - } - }, - "required": ["role"] - } + "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": ["type"] + "required": ["id", "organization_id", "name", "region", "created_at", "status"] }, - "UpdateApiKeyBody": { + "OrganizationResponseV1": { "type": "object", "properties": { - "description": { - "type": "string", - "nullable": true + "id": { + "type": "string" }, - "secret_jwt_template": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "role": { - "type": "string" - } - }, - "required": ["role"] - } - ] + "name": { + "type": "string" } - } - }, - "DesiredInstanceSize": { - "type": "string", - "enum": [ - "micro", - "small", - "medium", - "large", - "xlarge", - "2xlarge", - "4xlarge", - "8xlarge", - "12xlarge", - "16xlarge" - ] - }, - "ReleaseChannel": { - "type": "string", - "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] + }, + "required": ["id", "name"] }, - "PostgresEngine": { - "type": "string", - "description": "Postgres engine version. If not provided, the latest version will be used.", - "enum": ["15", "17-oriole"] + "CreateOrganizationV1Dto": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + }, + "required": ["name"], + "additionalProperties": false }, - "CreateBranchBody": { + "OAuthTokenBody": { "type": "object", "properties": { - "desired_instance_size": { + "grant_type": { "type": "string", - "enum": [ - "micro", - "small", - "medium", - "large", - "xlarge", - "2xlarge", - "4xlarge", - "8xlarge", - "12xlarge", - "16xlarge" - ] + "enum": ["authorization_code", "refresh_token"] }, - "release_channel": { + "client_id": { "type": "string", - "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] + "format": "uuid" }, - "postgres_engine": { - "type": "string", - "description": "Postgres engine version. If not provided, the latest version will be used.", - "enum": ["15", "17-oriole"] + "client_secret": { + "type": "string" }, - "branch_name": { + "code": { "type": "string" }, - "git_branch": { + "code_verifier": { "type": "string" }, - "persistent": { - "type": "boolean" + "redirect_uri": { + "type": "string" }, - "region": { + "refresh_token": { "type": "string" } }, - "required": ["branch_name"] + "additionalProperties": false }, - "ValidationRecord": { + "OAuthTokenResponse": { "type": "object", "properties": { - "txt_name": { + "access_token": { "type": "string" }, - "txt_value": { + "refresh_token": { "type": "string" + }, + "expires_in": { + "type": "integer" + }, + "token_type": { + "type": "string", + "enum": ["Bearer"] } }, - "required": ["txt_name", "txt_value"] + "required": ["access_token", "refresh_token", "expires_in", "token_type"], + "additionalProperties": false }, - "ValidationError": { + "OAuthRevokeTokenBodyDto": { "type": "object", "properties": { - "message": { + "client_id": { + "type": "string", + "format": "uuid" + }, + "client_secret": { + "type": "string" + }, + "refresh_token": { "type": "string" } }, - "required": ["message"] + "required": ["client_id", "client_secret", "refresh_token"], + "additionalProperties": false }, - "SslValidation": { + "SnippetProject": { "type": "object", "properties": { - "status": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + } + }, + "required": ["id", "name"] + }, + "SnippetUser": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "username": { + "type": "string" + } + }, + "required": ["id", "username"] + }, + "SnippetMeta": { + "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" }, - "validation_records": { + "description": { + "type": "string", + "nullable": true + }, + "project": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + } + }, + "required": ["id", "name"] + }, + "owner": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "username": { + "type": "string" + } + }, + "required": ["id", "username"] + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "username": { + "type": "string" + } + }, + "required": ["id", "username"] + } + }, + "required": [ + "id", + "inserted_at", + "updated_at", + "type", + "visibility", + "name", + "description", + "project", + "owner", + "updated_by" + ] + }, + "SnippetList": { + "type": "object", + "properties": { + "data": { "type": "array", "items": { "type": "object", "properties": { - "txt_name": { + "id": { "type": "string" }, - "txt_value": { + "inserted_at": { "type": "string" - } - }, - "required": ["txt_name", "txt_value"] - } - }, - "validation_errors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "message": { + }, + "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": "integer", + "format": "int64" + }, + "name": { + "type": "string" + } + }, + "required": ["id", "name"] + }, + "owner": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "username": { + "type": "string" + } + }, + "required": ["id", "username"] + }, + "updated_by": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "username": { + "type": "string" + } + }, + "required": ["id", "username"] } }, - "required": ["message"] + "required": [ + "id", + "inserted_at", + "updated_at", + "type", + "visibility", + "name", + "description", + "project", + "owner", + "updated_by" + ] } + }, + "cursor": { + "type": "string" } }, - "required": ["status", "validation_records"] + "required": ["data"] }, - "OwnershipVerification": { + "SnippetContent": { "type": "object", "properties": { - "type": { - "type": "string" + "favorite": { + "type": "boolean" }, - "name": { + "schema_version": { "type": "string" }, - "value": { + "sql": { "type": "string" } }, - "required": ["type", "name", "value"] + "required": ["favorite", "schema_version", "sql"] }, - "CustomHostnameDetails": { + "SnippetResponse": { "type": "object", "properties": { "id": { "type": "string" }, - "hostname": { + "inserted_at": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["sql"] + }, + "visibility": { + "enum": ["user", "project", "org", "public"], + "type": "string" + }, + "name": { "type": "string" }, - "ssl": { + "description": { + "type": "string", + "nullable": true + }, + "project": { "type": "object", "properties": { - "status": { - "type": "string" + "id": { + "type": "integer", + "format": "int64" }, - "validation_records": { - "type": "array", - "items": { - "type": "object", - "properties": { - "txt_name": { - "type": "string" - }, - "txt_value": { - "type": "string" - } - }, - "required": ["txt_name", "txt_value"] - } + "name": { + "type": "string" + } + }, + "required": ["id", "name"] + }, + "owner": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" }, - "validation_errors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - }, - "required": ["message"] - } + "username": { + "type": "string" } }, - "required": ["status", "validation_records"] + "required": ["id", "username"] }, - "ownership_verification": { + "updated_by": { "type": "object", "properties": { - "type": { + "id": { + "type": "integer", + "format": "int64" + }, + "username": { "type": "string" + } + }, + "required": ["id", "username"] + }, + "content": { + "type": "object", + "properties": { + "favorite": { + "type": "boolean" }, - "name": { + "schema_version": { "type": "string" }, - "value": { + "sql": { "type": "string" } }, - "required": ["type", "name", "value"] + "required": ["favorite", "schema_version", "sql"] + } + }, + "required": [ + "id", + "inserted_at", + "updated_at", + "type", + "visibility", + "name", + "description", + "project", + "owner", + "updated_by", + "content" + ] + }, + "ApiKeyResponse": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "custom_origin_server": { + "api_key": { "type": "string" }, - "verification_errors": { - "type": "array", - "items": { - "type": "string" - } + "id": { + "type": "string", + "nullable": true }, - "status": { - "type": "string" + "type": { + "type": "string", + "enum": ["publishable", "secret", "legacy"], + "nullable": true + }, + "prefix": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "hash": { + "type": "string", + "nullable": true + }, + "secret_jwt_template": { + "type": "object", + "properties": { + "role": { + "type": "string", + "minLength": 1 + } + }, + "required": ["role"], + "nullable": true + }, + "inserted_at": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "updated_at": { + "type": "string", + "format": "date-time", + "nullable": true } }, - "required": [ - "id", - "hostname", - "ssl", - "ownership_verification", - "custom_origin_server", - "status" - ] + "required": ["name", "api_key"] }, - "CfResponse": { + "CreateApiKeyBody": { "type": "object", "properties": { - "success": { - "type": "boolean" + "type": { + "type": "string", + "enum": ["publishable", "secret"] }, - "errors": { - "type": "array", - "items": { - "type": "object" - } + "description": { + "type": "string", + "nullable": true }, - "messages": { - "type": "array", - "items": { - "type": "object" - } + "secret_jwt_template": { + "type": "object", + "properties": { + "role": { + "type": "string", + "minLength": 1 + } + }, + "required": ["role"], + "nullable": true + } + }, + "required": ["type"] + }, + "UpdateApiKeyBody": { + "type": "object", + "properties": { + "description": { + "type": "string", + "nullable": true }, - "result": { + "secret_jwt_template": { "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" + "role": { + "type": "string", + "minLength": 1 } }, - "required": [ - "id", - "hostname", - "ssl", - "ownership_verification", - "custom_origin_server", - "status" + "required": ["role"], + "nullable": true + } + } + }, + "CreateBranchBody": { + "type": "object", + "properties": { + "branch_name": { + "type": "string", + "minLength": 1 + }, + "git_branch": { + "type": "string" + }, + "persistent": { + "type": "boolean" + }, + "region": { + "type": "string" + }, + "desired_instance_size": { + "type": "string", + "enum": [ + "pico", + "nano", + "micro", + "small", + "medium", + "large", + "xlarge", + "2xlarge", + "4xlarge", + "8xlarge", + "12xlarge", + "16xlarge" ] + }, + "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-oriole"], + "description": "Postgres engine version. If not provided, the latest version will be used." + }, + "secrets": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, - "required": ["success", "errors", "messages", "result"] + "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" - ], - "type": "string" + ] }, "custom_hostname": { "type": "string" @@ -11416,13 +13234,13 @@ "errors": { "type": "array", "items": { - "type": "object" + "description": "Any JSON-serializable value" } }, "messages": { "type": "array", "items": { - "type": "object" + "description": "Any JSON-serializable value" } }, "result": { @@ -11546,29 +13364,12 @@ }, "required": ["ipv4_addresses"] }, - "NetworkRestrictionsRequest": { - "type": "object", - "properties": { - "dbAllowedCidrs": { - "type": "array", - "items": { - "type": "string" - } - }, - "dbAllowedCidrsV6": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, "NetworkRestrictionsResponse": { "type": "object", "properties": { "entitlement": { - "enum": ["disallowed", "allowed"], - "type": "string" + "type": "string", + "enum": ["disallowed", "allowed"] }, "config": { "type": "object", @@ -11585,7 +13386,8 @@ "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", @@ -11602,15 +13404,33 @@ "type": "string" } } - } + }, + "description": "Populated when a new config has been received, but not registered as successfully applied to a project." }, "status": { - "enum": ["stored", "applied"], - "type": "string" + "type": "string", + "enum": ["stored", "applied"] } }, "required": ["entitlement", "config", "status"] }, + "NetworkRestrictionsRequest": { + "type": "object", + "properties": { + "dbAllowedCidrs": { + "type": "array", + "items": { + "type": "string" + } + }, + "dbAllowedCidrsV6": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "PgsodiumConfigResponse": { "type": "object", "properties": { @@ -11632,29 +13452,35 @@ "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." }, - "db_schema": { - "type": "string" - }, - "db_extra_search_path": { - "type": "string" - }, "jwt_secret": { "type": "string" } }, - "required": ["max_rows", "db_pool", "db_schema", "db_extra_search_path"] + "required": ["db_schema", "max_rows", "db_extra_search_path", "db_pool"] }, - "UpdatePostgrestConfigBody": { + "V1UpdatePostgrestConfigBody": { "type": "object", "properties": { + "db_extra_search_path": { + "type": "string" + }, + "db_schema": { + "type": "string" + }, "max_rows": { "type": "integer", "minimum": 0, @@ -11664,34 +13490,28 @@ "type": "integer", "minimum": 0, "maximum": 1000 - }, - "db_extra_search_path": { - "type": "string" - }, - "db_schema": { - "type": "string" } } }, "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." - }, - "db_schema": { - "type": "string" - }, - "db_extra_search_path": { - "type": "string" } }, - "required": ["max_rows", "db_pool", "db_schema", "db_extra_search_path"] + "required": ["db_schema", "max_rows", "db_extra_search_path", "db_pool"] }, "V1ProjectRefResponse": { "type": "object", @@ -11717,36 +13537,13 @@ }, "value": { "type": "string" - } - }, - "required": ["name", "value"] - }, - "CreateSecretBody": { - "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 + "updated_at": { + "type": "string" } }, "required": ["name", "value"] }, - "SslEnforcements": { - "type": "object", - "properties": { - "database": { - "type": "boolean" - } - }, - "required": ["database"] - }, "SslEnforcementResponse": { "type": "object", "properties": { @@ -11793,8 +13590,8 @@ "type": "object", "properties": { "status": { - "enum": ["not-used", "custom-domain-used", "active"], - "type": "string" + "type": "string", + "enum": ["not-used", "custom-domain-used", "active"] }, "custom_domain": { "type": "string" @@ -11832,15 +13629,15 @@ "UpgradeDatabaseBody": { "type": "object", "properties": { + "target_version": { + "type": "string" + }, "release_channel": { "type": "string", "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] - }, - "target_version": { - "type": "string" } }, - "required": ["release_channel", "target_version"] + "required": ["target_version"] }, "ProjectUpgradeInitiateResponse": { "type": "object", @@ -11851,40 +13648,19 @@ }, "required": ["tracking_id"] }, - "ProjectVersion": { - "type": "object", - "properties": { - "postgres_version": { - "type": "string", - "description": "Postgres engine version. If not provided, the latest version will be used.", - "enum": ["15", "17-oriole"] - }, - "release_channel": { - "type": "string", - "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] - }, - "app_version": { - "type": "string" - } - }, - "required": ["postgres_version", "release_channel", "app_version"] - }, "ProjectUpgradeEligibilityResponse": { "type": "object", "properties": { - "current_app_version_release_channel": { - "type": "string", - "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] - }, - "duration_estimate_hours": { - "type": "integer" - }, "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" }, @@ -11895,7 +13671,6 @@ "properties": { "postgres_version": { "type": "string", - "description": "Postgres engine version. If not provided, the latest version will be used.", "enum": ["15", "17-oriole"] }, "release_channel": { @@ -11915,6 +13690,9 @@ "type": "string" } }, + "duration_estimate_hours": { + "type": "number" + }, "legacy_auth_custom_roles": { "type": "array", "items": { @@ -11929,122 +13707,68 @@ } }, "required": [ - "current_app_version_release_channel", - "duration_estimate_hours", "eligible", "current_app_version", + "current_app_version_release_channel", "latest_app_version", "target_upgrade_versions", "potential_breaking_changes", + "duration_estimate_hours", "legacy_auth_custom_roles", "extension_dependent_objects" ] }, - "DatabaseUpgradeStatus": { - "type": "object", - "properties": { - "target_version": { - "type": "integer" - }, - "status": { - "enum": [0, 1, 2], - "type": "integer" - }, - "initiated_at": { - "type": "string" - }, - "latest_status_at": { - "type": "string" - }, - "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" - ] - } - }, - "required": ["target_version", "status", "initiated_at", "latest_status_at"] - }, "DatabaseUpgradeStatusResponse": { "type": "object", "properties": { "databaseUpgradeStatus": { - "nullable": true, - "allOf": [ - { - "type": "object", - "properties": { - "target_version": { - "type": "integer" - }, - "status": { - "enum": [0, 1, 2], - "type": "integer" - }, - "initiated_at": { - "type": "string" - }, - "latest_status_at": { - "type": "string" - }, - "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" - ] - } - }, - "required": ["target_version", "status", "initiated_at", "latest_status_at"] + "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"] @@ -12104,28 +13828,20 @@ }, "required": ["database_identifier"] }, - "AuthHealthResponse": { + "V1ServiceHealthResponse": { "type": "object", "properties": { "name": { "type": "string", - "enum": ["GoTrue"] - } - }, - "required": ["name"] - }, - "RealtimeHealthResponse": { - "type": "object", - "properties": { - "connected_cluster": { - "type": "integer" - } - }, - "required": ["connected_cluster"] - }, - "V1ServiceHealthResponse": { - "type": "object", - "properties": { + "enum": ["auth", "db", "pooler", "realtime", "rest", "storage"] + }, + "healthy": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": ["COMING_UP", "ACTIVE_HEALTHY", "UNHEALTHY"] + }, "info": { "oneOf": [ { @@ -12134,68 +13850,140 @@ "name": { "type": "string", "enum": ["GoTrue"] + }, + "version": { + "type": "string" + }, + "description": { + "type": "string" } }, - "required": ["name"] + "required": ["name", "version", "description"] }, { "type": "object", "properties": { + "healthy": { + "type": "boolean" + }, + "db_connected": { + "type": "boolean" + }, "connected_cluster": { "type": "integer" } }, - "required": ["connected_cluster"] + "required": ["healthy", "db_connected", "connected_cluster"] } ] }, - "name": { - "enum": ["auth", "db", "pooler", "realtime", "rest", "storage"], - "type": "string" - }, - "healthy": { - "type": "boolean" - }, - "status": { - "enum": ["COMING_UP", "ACTIVE_HEALTHY", "UNHEALTHY"], - "type": "string" - }, "error": { "type": "string" } }, "required": ["name", "healthy", "status"] }, - "StorageFeatureImageTransformation": { + "CreateSigningKeyBody": { "type": "object", "properties": { - "enabled": { - "type": "boolean" + "algorithm": { + "type": "string", + "enum": ["EdDSA", "ES256", "RS256", "HS256"] + }, + "status": { + "type": "string", + "enum": ["in_use", "standby"] } }, - "required": ["enabled"] + "required": ["algorithm"], + "additionalProperties": false }, - "StorageFeatures": { + "SigningKeysResponse": { "type": "object", "properties": { - "imageTransformation": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - } - }, - "required": ["enabled"] + "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 + }, + "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 + }, + "UpdateSigningKeyBody": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": ["in_use", "previously_used", "revoked", "standby"] } }, - "required": ["imageTransformation"] + "required": ["status"], + "additionalProperties": false }, "StorageConfigResponse": { "type": "object", "properties": { "fileSizeLimit": { - "type": "integer", - "format": "int64" + "type": "integer" }, "features": { "type": "object", @@ -12208,9 +13996,18 @@ } }, "required": ["enabled"] + }, + "s3Protocol": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"] } }, - "required": ["imageTransformation"] + "required": ["imageTransformation", "s3Protocol"] } }, "required": ["fileSizeLimit", "features"] @@ -12221,8 +14018,7 @@ "fileSizeLimit": { "type": "integer", "minimum": 0, - "maximum": 53687091200, - "format": "int64" + "maximum": 53687091200 }, "features": { "type": "object", @@ -12235,9 +14031,18 @@ } }, "required": ["enabled"] + }, + "s3Protocol": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"] } }, - "required": ["imageTransformation"] + "required": ["imageTransformation", "s3Protocol"] } } }, @@ -12253,6 +14058,9 @@ "maintenance_work_mem": { "type": "string" }, + "track_activity_query_size": { + "type": "string" + }, "max_connections": { "type": "integer", "minimum": 1, @@ -12301,6 +14109,10 @@ "minimum": 0, "maximum": 262143 }, + "session_replication_role": { + "type": "string", + "enum": ["origin", "replica", "local"] + }, "shared_buffers": { "type": "string" }, @@ -12318,10 +14130,6 @@ }, "work_mem": { "type": "string" - }, - "session_replication_role": { - "enum": ["origin", "replica", "local"], - "type": "string" } } }, @@ -12337,6 +14145,9 @@ "maintenance_work_mem": { "type": "string" }, + "track_activity_query_size": { + "type": "string" + }, "max_connections": { "type": "integer", "minimum": 1, @@ -12385,6 +14196,10 @@ "minimum": 0, "maximum": 262143 }, + "session_replication_role": { + "type": "string", + "enum": ["origin", "replica", "local"] + }, "shared_buffers": { "type": "string" }, @@ -12405,10 +14220,6 @@ }, "restart_database": { "type": "boolean" - }, - "session_replication_role": { - "enum": ["origin", "replica", "local"], - "type": "string" } } }, @@ -12436,23 +14247,12 @@ "SupavisorConfigResponse": { "type": "object", "properties": { - "db_port": { - "type": "integer" - }, - "default_pool_size": { - "type": "integer", - "nullable": true - }, - "max_client_conn": { - "type": "integer", - "nullable": true - }, "identifier": { "type": "string" }, "database_type": { - "enum": ["PRIMARY", "READ_REPLICA"], - "type": "string" + "type": "string", + "enum": ["PRIMARY", "READ_REPLICA"] }, "is_using_scram_auth": { "type": "boolean" @@ -12463,28 +14263,44 @@ "db_host": { "type": "string" }, + "db_port": { + "type": "integer" + }, "db_name": { "type": "string" }, - "connectionString": { + "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": { - "enum": ["transaction", "session"], - "type": "string" + "type": "string", + "enum": ["transaction", "session"] } }, "required": [ - "db_port", - "default_pool_size", - "max_client_conn", "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" ] }, @@ -12493,15 +14309,14 @@ "properties": { "default_pool_size": { "type": "integer", - "nullable": true, "minimum": 0, - "maximum": 1000 + "maximum": 1000, + "nullable": true }, "pool_mode": { - "enum": ["transaction", "session"], "type": "string", - "deprecated": true, - "description": "This field is deprecated and is ignored in this request" + "enum": ["transaction", "session"], + "description": "Dedicated pooler mode for the project" } } }, @@ -12513,7 +14328,6 @@ "nullable": true }, "pool_mode": { - "enum": ["transaction", "session"], "type": "string" } }, @@ -12530,83 +14344,6 @@ "type": "integer", "nullable": true }, - "jwt_exp": { - "type": "integer", - "nullable": true - }, - "mailer_otp_exp": { - "type": "integer" - }, - "mailer_otp_length": { - "type": "integer", - "nullable": true - }, - "mfa_max_enrolled_factors": { - "type": "integer", - "nullable": true - }, - "mfa_phone_otp_length": { - "type": "integer" - }, - "mfa_phone_max_frequency": { - "type": "integer", - "nullable": true - }, - "password_min_length": { - "type": "integer", - "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 - }, - "security_refresh_token_reuse_interval": { - "type": "integer", - "nullable": true - }, - "sessions_inactivity_timeout": { - "type": "integer", - "nullable": true - }, - "sessions_timebox": { - "type": "integer", - "nullable": true - }, - "sms_max_frequency": { - "type": "integer", - "nullable": true - }, - "sms_otp_exp": { - "type": "integer", - "nullable": true - }, - "sms_otp_length": { - "type": "integer" - }, - "smtp_max_frequency": { - "type": "integer", - "nullable": true - }, "disable_signup": { "type": "boolean", "nullable": true @@ -12879,6 +14616,10 @@ "type": "string", "nullable": true }, + "external_web3_solana_enabled": { + "type": "boolean", + "nullable": true + }, "external_zoom_client_id": { "type": "string", "nullable": true @@ -12951,6 +14692,10 @@ "type": "string", "nullable": true }, + "jwt_exp": { + "type": "integer", + "nullable": true + }, "mailer_allow_unverified_email_sign_ins": { "type": "boolean", "nullable": true @@ -12959,6 +14704,13 @@ "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 @@ -13011,6 +14763,10 @@ "type": "string", "nullable": true }, + "mfa_max_enrolled_factors": { + "type": "integer", + "nullable": true + }, "mfa_totp_enroll_enabled": { "type": "boolean", "nullable": true @@ -13035,18 +14791,57 @@ "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 + }, "password_hibp_enabled": { "type": "boolean", "nullable": true }, + "password_min_length": { + "type": "integer", + "nullable": true + }, "password_required_characters": { "type": "string", "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 @@ -13079,10 +14874,18 @@ "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 @@ -13091,6 +14894,10 @@ "type": "string", "nullable": true }, + "sessions_timebox": { + "type": "integer", + "nullable": true + }, "site_url": { "type": "string", "nullable": true @@ -13099,6 +14906,10 @@ "type": "boolean", "nullable": true }, + "sms_max_frequency": { + "type": "integer", + "nullable": true + }, "sms_messagebird_access_key": { "type": "string", "nullable": true @@ -13107,6 +14918,13 @@ "type": "string", "nullable": true }, + "sms_otp_exp": { + "type": "integer", + "nullable": true + }, + "sms_otp_length": { + "type": "integer" + }, "sms_provider": { "type": "string", "nullable": true @@ -13179,6 +14997,10 @@ "type": "string", "nullable": true }, + "smtp_max_frequency": { + "type": "integer", + "nullable": true + }, "smtp_pass": { "type": "string", "nullable": true @@ -13203,26 +15025,6 @@ "required": [ "api_max_request_duration", "db_max_pool_size", - "jwt_exp", - "mailer_otp_exp", - "mailer_otp_length", - "mfa_max_enrolled_factors", - "mfa_phone_otp_length", - "mfa_phone_max_frequency", - "password_min_length", - "rate_limit_anonymous_users", - "rate_limit_email_sent", - "rate_limit_sms_sent", - "rate_limit_token_refresh", - "rate_limit_verify", - "rate_limit_otp", - "security_refresh_token_reuse_interval", - "sessions_inactivity_timeout", - "sessions_timebox", - "sms_max_frequency", - "sms_otp_exp", - "sms_otp_length", - "smtp_max_frequency", "disable_signup", "external_anonymous_users_enabled", "external_apple_additional_client_ids", @@ -13291,6 +15093,7 @@ "external_workos_enabled", "external_workos_secret", "external_workos_url", + "external_web3_solana_enabled", "external_zoom_client_id", "external_zoom_enabled", "external_zoom_secret", @@ -13309,8 +15112,11 @@ "hook_send_email_enabled", "hook_send_email_uri", "hook_send_email_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", @@ -13319,277 +15125,304 @@ "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_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_template", - "password_hibp_enabled", - "password_required_characters", - "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_update_password_require_reauthentication", - "sessions_single_per_user", - "sessions_tags", - "site_url", - "sms_autoconfirm", - "sms_messagebird_access_key", - "sms_messagebird_originator", - "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_pass", - "smtp_port", - "smtp_sender_name", - "smtp_user", - "uri_allow_list" - ] - }, - "UpdateAuthConfigBody": { - "type": "object", - "properties": { - "jwt_exp": { - "type": "integer", - "minimum": 0, - "maximum": 604800 - }, - "smtp_max_frequency": { - "type": "integer", - "minimum": 0, - "maximum": 32767 - }, - "mfa_max_enrolled_factors": { - "type": "integer", - "minimum": 0, - "maximum": 2147483647 - }, - "sessions_timebox": { - "type": "integer", - "minimum": 0 - }, - "sessions_inactivity_timeout": { - "type": "integer", - "minimum": 0 - }, - "rate_limit_anonymous_users": { - "type": "integer", - "minimum": 1, - "maximum": 2147483647 - }, - "rate_limit_email_sent": { - "type": "integer", - "minimum": 1, - "maximum": 2147483647 - }, - "rate_limit_sms_sent": { - "type": "integer", - "minimum": 1, - "maximum": 2147483647 - }, - "rate_limit_verify": { - "type": "integer", - "minimum": 1, - "maximum": 2147483647 - }, - "rate_limit_token_refresh": { - "type": "integer", - "minimum": 1, - "maximum": 2147483647 - }, - "rate_limit_otp": { - "type": "integer", - "minimum": 1, - "maximum": 2147483647 - }, - "password_min_length": { - "type": "integer", - "minimum": 6, - "maximum": 32767 - }, - "security_refresh_token_reuse_interval": { - "type": "integer", - "minimum": 0, - "maximum": 2147483647 - }, - "mailer_otp_exp": { - "type": "integer", - "minimum": 0, - "maximum": 2147483647 - }, - "mailer_otp_length": { - "type": "integer", - "minimum": 6, - "maximum": 10 - }, - "sms_max_frequency": { - "type": "integer", - "minimum": 0, - "maximum": 32767 - }, - "sms_otp_exp": { - "type": "integer", - "minimum": 0, - "maximum": 2147483647 - }, - "sms_otp_length": { - "type": "integer", - "minimum": 0, - "maximum": 32767 - }, - "db_max_pool_size": { - "type": "integer" - }, - "api_max_request_duration": { - "type": "integer" - }, - "mfa_phone_max_frequency": { - "type": "integer", - "minimum": 0, - "maximum": 32767 - }, - "mfa_phone_otp_length": { - "type": "integer", - "minimum": 0, - "maximum": 32767 - }, + "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", + "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": "/^[^,]+$/" + "pattern": "^[^,]+$", + "nullable": true }, "disable_signup": { - "type": "boolean" + "type": "boolean", + "nullable": true + }, + "jwt_exp": { + "type": "integer", + "minimum": 0, + "maximum": 604800, + "nullable": true }, "smtp_admin_email": { - "type": "string" + "type": "string", + "nullable": true }, "smtp_host": { - "type": "string" + "type": "string", + "nullable": true }, "smtp_port": { - "type": "string" + "type": "string", + "nullable": true }, "smtp_user": { - "type": "string" + "type": "string", + "nullable": true }, "smtp_pass": { - "type": "string" + "type": "string", + "nullable": true + }, + "smtp_max_frequency": { + "type": "integer", + "minimum": 0, + "maximum": 32767, + "nullable": true }, "smtp_sender_name": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_allow_unverified_email_sign_ins": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mailer_autoconfirm": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mailer_subjects_invite": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_subjects_confirmation": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_subjects_recovery": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_subjects_email_change": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_subjects_magic_link": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_subjects_reauthentication": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_invite_content": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_confirmation_content": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_recovery_content": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_email_change_content": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_magic_link_content": { - "type": "string" + "type": "string", + "nullable": true }, "mailer_templates_reauthentication_content": { - "type": "string" + "type": "string", + "nullable": true + }, + "mfa_max_enrolled_factors": { + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "nullable": true }, "uri_allow_list": { - "type": "string" + "type": "string", + "nullable": true }, "external_anonymous_users_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_email_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_phone_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "saml_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "saml_external_url": { "type": "string", - "pattern": "/^[^,]+$/" + "pattern": "^[^,]+$", + "nullable": true }, "security_captcha_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "security_captcha_provider": { - "type": "string" + "type": "string", + "enum": ["turnstile", "hcaptcha"], + "nullable": true }, "security_captcha_secret": { - "type": "string" + "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" + "type": "boolean", + "nullable": true }, "sessions_tags": { "type": "string", - "pattern": "/^\\s*([a-z0-9_-]+(\\s*,+\\s*)?)*\\s*$/i" + "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" + "type": "boolean", + "nullable": true }, "refresh_token_rotation_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "password_hibp_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true + }, + "password_min_length": { + "type": "integer", + "minimum": 6, + "maximum": 32767, + "nullable": true }, "password_required_characters": { "type": "string", @@ -13598,452 +15431,1125 @@ "abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789", "abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789:!@#$%^&*()_+-=[]{};'\\\\:\"|<>?,./`~", "" - ] + ], + "nullable": true }, "security_manual_linking_enabled": { - "type": "boolean" + "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 }, - "security_update_password_require_reauthentication": { - "type": "boolean" + "mailer_otp_length": { + "type": "integer", + "minimum": 6, + "maximum": 10, + "nullable": true }, "sms_autoconfirm": { - "type": "boolean" + "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" + "type": "string", + "enum": ["messagebird", "textlocal", "twilio", "twilio_verify", "vonage"], + "nullable": true }, "sms_messagebird_access_key": { - "type": "string" + "type": "string", + "nullable": true }, "sms_messagebird_originator": { - "type": "string" + "type": "string", + "nullable": true }, "sms_test_otp": { "type": "string", - "pattern": "/^([0-9]{1,15}=[0-9]+,?)*$/" + "pattern": "^([0-9]{1,15}=[0-9]+,?)*$", + "nullable": true }, "sms_test_otp_valid_until": { - "type": "string" + "type": "string", + "format": "date-time", + "nullable": true }, "sms_textlocal_api_key": { - "type": "string" + "type": "string", + "nullable": true }, "sms_textlocal_sender": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_account_sid": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_auth_token": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_content_sid": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_message_service_sid": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_verify_account_sid": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_verify_auth_token": { - "type": "string" + "type": "string", + "nullable": true }, "sms_twilio_verify_message_service_sid": { - "type": "string" + "type": "string", + "nullable": true }, "sms_vonage_api_key": { - "type": "string" + "type": "string", + "nullable": true }, "sms_vonage_api_secret": { - "type": "string" + "type": "string", + "nullable": true }, "sms_vonage_from": { - "type": "string" + "type": "string", + "nullable": true }, "sms_template": { - "type": "string" + "type": "string", + "nullable": true }, "hook_mfa_verification_attempt_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "hook_mfa_verification_attempt_uri": { - "type": "string" + "type": "string", + "nullable": true }, "hook_mfa_verification_attempt_secrets": { - "type": "string" + "type": "string", + "nullable": true }, "hook_password_verification_attempt_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "hook_password_verification_attempt_uri": { - "type": "string" + "type": "string", + "nullable": true }, "hook_password_verification_attempt_secrets": { - "type": "string" + "type": "string", + "nullable": true }, "hook_custom_access_token_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "hook_custom_access_token_uri": { - "type": "string" + "type": "string", + "nullable": true }, "hook_custom_access_token_secrets": { - "type": "string" + "type": "string", + "nullable": true }, "hook_send_sms_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "hook_send_sms_uri": { - "type": "string" + "type": "string", + "nullable": true }, "hook_send_sms_secrets": { - "type": "string" + "type": "string", + "nullable": true }, "hook_send_email_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "hook_send_email_uri": { - "type": "string" + "type": "string", + "nullable": true }, "hook_send_email_secrets": { - "type": "string" + "type": "string", + "nullable": true }, "external_apple_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_apple_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_apple_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_apple_additional_client_ids": { - "type": "string" + "type": "string", + "nullable": true }, "external_azure_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_azure_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_azure_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_azure_url": { - "type": "string" + "type": "string", + "nullable": true }, "external_bitbucket_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_bitbucket_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_bitbucket_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_discord_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_discord_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_discord_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_facebook_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_facebook_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_facebook_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_figma_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_figma_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_figma_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_github_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_github_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_github_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_gitlab_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_gitlab_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_gitlab_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_gitlab_url": { - "type": "string" + "type": "string", + "nullable": true }, "external_google_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_google_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_google_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_google_additional_client_ids": { - "type": "string" + "type": "string", + "nullable": true }, "external_google_skip_nonce_check": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_kakao_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_kakao_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_kakao_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_keycloak_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_keycloak_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_keycloak_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_keycloak_url": { - "type": "string" + "type": "string", + "nullable": true }, "external_linkedin_oidc_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_linkedin_oidc_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_linkedin_oidc_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_slack_oidc_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_slack_oidc_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_slack_oidc_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_notion_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_notion_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_notion_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_slack_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_slack_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_slack_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_spotify_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_spotify_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_spotify_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_twitch_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_twitch_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_twitch_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_twitter_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_twitter_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_twitter_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_workos_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_workos_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_workos_secret": { - "type": "string" + "type": "string", + "nullable": true }, "external_workos_url": { - "type": "string" + "type": "string", + "nullable": true + }, + "external_web3_solana_enabled": { + "type": "boolean", + "nullable": true }, "external_zoom_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "external_zoom_client_id": { - "type": "string" + "type": "string", + "nullable": true }, "external_zoom_secret": { - "type": "string" + "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" + "type": "boolean", + "nullable": true }, "mfa_totp_verify_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mfa_web_authn_enroll_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mfa_web_authn_verify_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mfa_phone_enroll_enabled": { - "type": "boolean" + "type": "boolean", + "nullable": true }, "mfa_phone_verify_enabled": { - "type": "boolean" + "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 + } + } + }, + "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"] + }, + "ProjectAvailableRestoreVersion": { + "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"] + }, + "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"] + }, + "ListProjectAddonsResponseDto": { + "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" + ] + }, + { + "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" + ] + }, + { + "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"] }, - "CreateThirdPartyAuthBody": { + "ApplyProjectAddonBodyDto": { "type": "object", "properties": { - "oidc_issuer_url": { - "type": "string" - }, - "jwks_url": { - "type": "string" + "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" + ] + }, + { + "type": "string", + "enum": ["cd_default"] + }, + { + "type": "string", + "enum": ["pitr_7", "pitr_14", "pitr_28"] + }, + { + "type": "string", + "enum": ["ipv4_default"] + } + ] }, - "custom_jwks": { - "type": "object" + "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"] }, - "ThirdPartyAuth": { + "V1ProjectAdvisorsResponseDto": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string" + "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" + ] + }, + "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"] + }, + "V1AnalyticsResponse": { + "type": "object", + "properties": { + "result": { + "type": "array", + "items": {} }, - "oidc_issuer_url": { - "type": "string", - "nullable": true + "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"] + } + ] + } + } + }, + "V1ListMigrationsResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "version": { + "type": "string", + "minLength": 1 + }, + "name": { + "type": "string" + } }, - "jwks_url": { + "required": ["version"] + } + }, + "V1CreateMigrationBody": { + "type": "object", + "properties": { + "query": { "type": "string", - "nullable": true - }, - "custom_jwks": { - "type": "object", - "nullable": true - }, - "resolved_jwks": { - "type": "object", - "nullable": true - }, - "inserted_at": { - "type": "string" + "minLength": 1 }, - "updated_at": { + "name": { "type": "string" - }, - "resolved_at": { - "type": "string", - "nullable": true } }, - "required": ["id", "type", "inserted_at", "updated_at"] + "required": ["query"] }, "V1RunQueryBody": { "type": "object", "properties": { "query": { - "type": "string" + "type": "string", + "minLength": 1 + }, + "read_only": { + "type": "boolean" + } + }, + "required": ["query"] + }, + "GetProjectDbMetadataResponseDto": { + "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": ["query"] + "required": ["databases"] }, - "V1CreateFunctionBody": { + "FunctionResponse": { "type": "object", "properties": { - "slug": { - "type": "string", - "pattern": "/^[A-Za-z0-9_-]+$/" + "id": { + "type": "string" }, - "name": { + "slug": { "type": "string" }, - "body": { + "name": { "type": "string" }, - "verify_jwt": { - "type": "boolean" + "status": { + "type": "string", + "enum": ["ACTIVE", "REMOVED", "THROTTLED"] }, - "compute_multiplier": { - "type": "number", - "minimum": 1, - "maximum": 4 - } - }, - "required": ["slug", "name", "body"] - }, - "FunctionResponse": { - "type": "object", - "properties": { "version": { "type": "integer" }, "created_at": { - "type": "integer", - "format": "int64" + "type": "integer" }, "updated_at": { - "type": "integer", - "format": "int64" - }, - "id": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "name": { - "type": "string" - }, - "status": { - "enum": ["ACTIVE", "REMOVED", "THROTTLED"], - "type": "string" + "type": "integer" }, "verify_jwt": { "type": "boolean" @@ -14056,27 +16562,62 @@ }, "import_map_path": { "type": "string" - }, - "compute_multiplier": { - "type": "number" } }, - "required": ["version", "created_at", "updated_at", "id", "slug", "name", "status"] + "required": ["id", "slug", "name", "status", "version", "created_at", "updated_at"] }, - "FunctionSlugResponse": { + "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" + }, + "updated_at": { + "type": "integer" + }, + "verify_jwt": { + "type": "boolean" + }, + "import_map": { + "type": "boolean" + }, + "entrypoint_path": { + "type": "string" + }, + "import_map_path": { + "type": "string" + } + }, + "required": ["id", "slug", "name", "status", "version", "created_at", "updated_at"] + } + } + }, + "required": ["functions"] + }, + "DeployFunctionResponse": { "type": "object", "properties": { - "version": { - "type": "integer" - }, - "created_at": { - "type": "integer", - "format": "int64" - }, - "updated_at": { - "type": "integer", - "format": "int64" - }, "id": { "type": "string" }, @@ -14087,8 +16628,17 @@ "type": "string" }, "status": { - "enum": ["ACTIVE", "REMOVED", "THROTTLED"], - "type": "string" + "type": "string", + "enum": ["ACTIVE", "REMOVED", "THROTTLED"] + }, + "version": { + "type": "integer" + }, + "created_at": { + "type": "integer" + }, + "updated_at": { + "type": "integer" }, "verify_jwt": { "type": "boolean" @@ -14101,210 +16651,93 @@ }, "import_map_path": { "type": "string" - }, - "compute_multiplier": { - "type": "number" } }, - "required": ["version", "created_at", "updated_at", "id", "slug", "name", "status"] + "required": ["id", "slug", "name", "status", "version"] }, - "V1UpdateFunctionBody": { + "FunctionSlugResponse": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "body": { + "id": { "type": "string" }, - "verify_jwt": { - "type": "boolean" - }, - "compute_multiplier": { - "type": "number", - "minimum": 1, - "maximum": 4 - } - } - }, - "V1StorageBucketResponse": { - "type": "object", - "properties": { - "id": { + "slug": { "type": "string" }, "name": { "type": "string" }, - "owner": { - "type": "string" + "status": { + "type": "string", + "enum": ["ACTIVE", "REMOVED", "THROTTLED"] + }, + "version": { + "type": "integer" }, "created_at": { - "type": "string" + "type": "integer" }, "updated_at": { - "type": "string" + "type": "integer" }, - "public": { + "verify_jwt": { "type": "boolean" - } - }, - "required": ["id", "name", "owner", "created_at", "updated_at", "public"] - }, - "AttributeValue": { - "type": "object", - "properties": { - "default": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] }, - "name": { - "type": "string" + "import_map": { + "type": "boolean" }, - "names": { - "type": "array", - "items": { - "type": "string" - } + "entrypoint_path": { + "type": "string" }, - "array": { - "type": "boolean" - } - } - }, - "AttributeMapping": { - "type": "object", - "properties": { - "keys": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "default": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, - "array": { - "type": "boolean" - } - } - } + "import_map_path": { + "type": "string" } }, - "required": ["keys"] + "required": ["id", "slug", "name", "status", "version", "created_at", "updated_at"] }, - "CreateProviderBody": { + "V1StorageBucketResponse": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": ["saml"], - "description": "What type of provider will be created" - }, - "metadata_xml": { + "id": { "type": "string" }, - "metadata_url": { + "name": { "type": "string" }, - "domains": { - "type": "array", - "items": { - "type": "string" - } - }, - "attribute_mapping": { - "type": "object", - "properties": { - "keys": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "default": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, - "array": { - "type": "boolean" - } - } - } - } - }, - "required": ["keys"] + "owner": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "public": { + "type": "boolean" } }, - "required": ["type"] + "required": ["id", "name", "owner", "created_at", "updated_at", "public"] }, - "SamlDescriptor": { + "CreateProviderBody": { "type": "object", "properties": { - "id": { - "type": "string" + "type": { + "type": "string", + "enum": ["saml"], + "description": "What type of provider will be created" }, - "entity_id": { + "metadata_xml": { "type": "string" }, "metadata_url": { "type": "string" }, - "metadata_xml": { - "type": "string" + "domains": { + "type": "array", + "items": { + "type": "string" + } }, "attribute_mapping": { "type": "object", @@ -14314,10 +16747,20 @@ "additionalProperties": { "type": "object", "properties": { + "name": { + "type": "string" + }, + "names": { + "type": "array", + "items": { + "type": "string" + } + }, "default": { "oneOf": [ { - "type": "object" + "type": "object", + "properties": {} }, { "type": "number" @@ -14330,15 +16773,6 @@ } ] }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, "array": { "type": "boolean" } @@ -14349,25 +16783,7 @@ "required": ["keys"] } }, - "required": ["id", "entity_id"] - }, - "Domain": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "domain": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "updated_at": { - "type": "string" - } - }, - "required": ["id"] + "required": ["type"] }, "CreateProviderResponse": { "type": "object", @@ -14398,22 +16814,6 @@ "additionalProperties": { "type": "object", "properties": { - "default": { - "oneOf": [ - { - "type": "object" - }, - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, "name": { "type": "string" }, @@ -14423,81 +16823,11 @@ "type": "string" } }, - "array": { - "type": "boolean" - } - } - } - } - }, - "required": ["keys"] - } - }, - "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"] - }, - "Provider": { - "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": { "default": { "oneOf": [ { - "type": "object" + "type": "object", + "properties": {} }, { "type": "number" @@ -14510,15 +16840,6 @@ } ] }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, "array": { "type": "boolean" } @@ -14595,10 +16916,20 @@ "additionalProperties": { "type": "object", "properties": { + "name": { + "type": "string" + }, + "names": { + "type": "array", + "items": { + "type": "string" + } + }, "default": { "oneOf": [ { - "type": "object" + "type": "object", + "properties": {} }, { "type": "number" @@ -14611,15 +16942,6 @@ } ] }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, "array": { "type": "boolean" } @@ -14695,10 +17017,20 @@ "additionalProperties": { "type": "object", "properties": { + "name": { + "type": "string" + }, + "names": { + "type": "array", + "items": { + "type": "string" + } + }, "default": { "oneOf": [ { - "type": "object" + "type": "object", + "properties": {} }, { "type": "number" @@ -14711,15 +17043,6 @@ } ] }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, "array": { "type": "boolean" } @@ -14785,10 +17108,20 @@ "additionalProperties": { "type": "object", "properties": { + "name": { + "type": "string" + }, + "names": { + "type": "array", + "items": { + "type": "string" + } + }, "default": { "oneOf": [ { - "type": "object" + "type": "object", + "properties": {} }, { "type": "number" @@ -14801,15 +17134,6 @@ } ] }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, "array": { "type": "boolean" } @@ -14850,10 +17174,20 @@ "additionalProperties": { "type": "object", "properties": { + "name": { + "type": "string" + }, + "names": { + "type": "array", + "items": { + "type": "string" + } + }, "default": { "oneOf": [ { - "type": "object" + "type": "object", + "properties": {} }, { "type": "number" @@ -14866,15 +17200,6 @@ } ] }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, "array": { "type": "boolean" } @@ -14946,10 +17271,20 @@ "additionalProperties": { "type": "object", "properties": { + "name": { + "type": "string" + }, + "names": { + "type": "array", + "items": { + "type": "string" + } + }, "default": { "oneOf": [ { - "type": "object" + "type": "object", + "properties": {} }, { "type": "number" @@ -14962,15 +17297,6 @@ } ] }, - "name": { - "type": "string" - }, - "names": { - "type": "array", - "items": { - "type": "string" - } - }, "array": { "type": "boolean" } @@ -15125,6 +17451,10 @@ "type": "string", "enum": ["free", "pro", "team", "enterprise"] }, + "ReleaseChannel": { + "type": "string", + "enum": ["internal", "alpha", "beta", "ga", "withdrawn", "preview"] + }, "V1OrganizationSlugResponse": { "type": "object", "properties": {