{ "openapi": "3.0.0", "paths": { "/v1/projects": { "get": { "operationId": "getProjects", "summary": "List all projects", "description": "Returns a list of all projects you've previously created.", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ProjectResponse" } } } } } }, "tags": ["projects"], "security": [{ "bearer": [] }] }, "post": { "operationId": "createProject", "summary": "Create a project", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateProjectBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectResponse" } } } } }, "tags": ["projects"], "security": [{ "bearer": [] }] } }, "/v1/organizations": { "get": { "operationId": "getOrganizations", "summary": "List all organizations", "description": "Returns a list of organizations that you currently belong to.", "parameters": [], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/OrganizationResponse" } } } } }, "500": { "description": "Unexpected error listing organizations" } }, "tags": ["organizations"], "security": [{ "bearer": [] }] }, "post": { "operationId": "createOrganization_", "summary": "Create an organization", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateOrganizationBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationResponse" } } } }, "500": { "description": "Unexpected error creating an organization" } }, "tags": ["organizations"], "security": [{ "bearer": [] }] } }, "/v1/projects/{ref}/functions": { "get": { "operationId": "getFunctions", "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, "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FunctionResponse" } } } } }, "500": { "description": "Failed to retrieve project's functions" } }, "tags": ["projects"], "security": [{ "bearer": [] }] }, "post": { "operationId": "createFunction", "summary": "Create a function", "description": "Creates a function and adds it to the specified project.", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateFunctionBody" } } } }, "responses": { "201": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FunctionResponse" } } } }, "500": { "description": "Failed to create project's function" } }, "tags": ["projects"], "security": [{ "bearer": [] }] } }, "/v1/projects/{ref}/functions/{function_slug}": { "get": { "operationId": "getFunction", "summary": "Retrieve a function", "description": "Retrieves a function with the specified slug and project.", "parameters": [ { "name": "include_body", "required": false, "in": "query", "schema": { "type": "boolean" } }, { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "type": "string" } }, { "name": "function_slug", "required": true, "in": "path", "description": "Function slug", "schema": { "pattern": {}, "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FunctionSlugResponse" } } } }, "500": { "description": "Failed to retrieve function with given slug" } }, "tags": ["projects"], "security": [{ "bearer": [] }] }, "patch": { "operationId": "UpdateFunction", "summary": "Update a function", "description": "Updates a function with the specified slug and project.", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "type": "string" } }, { "name": "function_slug", "required": true, "in": "path", "description": "Function slug", "schema": { "pattern": {}, "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateFunctionBody" } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FunctionResponse" } } } }, "500": { "description": "Failed to update function with given slug" } }, "tags": ["projects"], "security": [{ "bearer": [] }] }, "delete": { "operationId": "deleteFunction", "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, "type": "string" } }, { "name": "function_slug", "required": true, "in": "path", "description": "Function slug", "schema": { "pattern": {}, "type": "string" } } ], "responses": { "200": { "description": "" }, "500": { "description": "Failed to delete function with given slug" } }, "tags": ["projects"], "security": [{ "bearer": [] }] } }, "/v1/projects/{ref}/secrets": { "get": { "operationId": "getSecrets", "summary": "List all secrets", "description": "Returns all secrets you've previously added to the specified project.", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "type": "string" } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SecretResponse" } } } } }, "500": { "description": "Failed to retrieve project's secrets" } }, "tags": ["projects"], "security": [{ "bearer": [] }] }, "post": { "operationId": "createSecrets", "summary": "Bulk create secrets", "description": "Creates multiple secrets and adds them to the specified project.", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/CreateSecretBody" } } } } }, "responses": { "201": { "description": "" }, "500": { "description": "Failed to create project's secrets" } }, "tags": ["projects"], "security": [{ "bearer": [] }] }, "delete": { "operationId": "deleteSecrets", "summary": "Bulk delete secrets", "description": "Deletes all secrets with the given names from the specified project", "parameters": [ { "name": "ref", "required": true, "in": "path", "description": "Project ref", "schema": { "minLength": 20, "maxLength": 20, "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object" } } } }, "500": { "description": "Failed to delete secrets with given names" } }, "tags": ["projects"], "security": [{ "bearer": [] }] } } }, "info": { "title": "Supabase API (v1)", "description": "", "version": "1.0.0", "contact": {} }, "tags": [ { "name": "organizations", "description": "Organization endpoints" }, { "name": "projects", "description": "Project endpoints" } ], "servers": [], "components": { "securitySchemes": { "bearer": { "scheme": "bearer", "bearerFormat": "JWT", "type": "http" } }, "schemas": { "ProjectResponse": { "type": "object", "properties": { "id": { "type": "string" }, "organization_id": { "type": "string" }, "name": { "type": "string" }, "region": { "type": "string" }, "created_at": { "type": "string" } }, "required": ["id", "organization_id", "name", "region", "created_at"] }, "CreateProjectBody": { "type": "object", "properties": { "db_pass": { "type": "string" }, "name": { "type": "string" }, "organization_id": { "type": "string" }, "plan": { "type": "string", "enum": ["free", "pro"] }, "region": { "type": "string", "enum": [ "us-east-1", "us-west-1", "ap-southeast-1", "ap-northeast-1", "ap-northeast-2", "ap-southeast-2", "eu-west-1", "eu-west-2", "eu-central-1", "ca-central-1", "ap-south-1", "sa-east-1" ] } }, "required": ["db_pass", "name", "organization_id", "plan", "region"] }, "OrganizationResponse": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": ["id", "name"] }, "CreateOrganizationBody": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"] }, "FunctionResponse": { "type": "object", "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "status": { "enum": ["ACTIVE", "REMOVED", "THROTTLED"], "type": "string" }, "version": { "type": "number" }, "created_at": { "type": "number" }, "updated_at": { "type": "number" }, "verify_jwt": { "type": "boolean" } }, "required": ["id", "slug", "name", "status", "version", "created_at", "updated_at"] }, "CreateFunctionBody": { "type": "object", "properties": { "slug": { "type": "string", "pattern": {} }, "name": { "type": "string" }, "body": { "type": "string" }, "verify_jwt": { "type": "boolean" } }, "required": ["slug", "name", "body"] }, "FunctionSlugResponse": { "type": "object", "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "status": { "enum": ["ACTIVE", "REMOVED", "THROTTLED"], "type": "string" }, "version": { "type": "number" }, "created_at": { "type": "number" }, "updated_at": { "type": "number" }, "verify_jwt": { "type": "boolean" }, "body": { "type": "string" } }, "required": ["id", "slug", "name", "status", "version", "created_at", "updated_at"] }, "UpdateFunctionBody": { "type": "object", "properties": { "name": { "type": "string" }, "body": { "type": "string" }, "verify_jwt": { "type": "boolean" } } }, "SecretResponse": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" } }, "required": ["name", "value"] }, "CreateSecretBody": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string", "pattern": {} } }, "required": ["name", "value"] } } } }