diff --git a/.github/workflows/studio-build.yml b/.github/workflows/studio-build.yml
index bb90e12f18c..b51253bbf04 100644
--- a/.github/workflows/studio-build.yml
+++ b/.github/workflows/studio-build.yml
@@ -14,7 +14,7 @@ jobs:
strategy:
matrix:
- node-version: [14.x]
+ node-version: [16.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
diff --git a/.github/workflows/studio-tests.yml b/.github/workflows/studio-tests.yml
index fa0dc31697b..5f4c6cf4b04 100644
--- a/.github/workflows/studio-tests.yml
+++ b/.github/workflows/studio-tests.yml
@@ -6,6 +6,8 @@ name: Studio Unit Tests
on:
push:
branches: [ master ]
+ paths:
+ - 'studio/**'
pull_request:
branches: [ master ]
paths:
@@ -17,7 +19,7 @@ jobs:
strategy:
matrix:
- node-version: [14.x]
+ node-version: [16.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
@@ -28,8 +30,8 @@ jobs:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Install deps
- run: npm i
- working-directory: ./studio
+ run: npm install
+ working-directory: ./
- name: Run tests
run: npm test
working-directory: ./studio
diff --git a/.turbo-cookie b/.turbo-cookie
new file mode 100755
index 00000000000..9e5d1817106
--- /dev/null
+++ b/.turbo-cookie
@@ -0,0 +1 @@
+cookie
\ No newline at end of file
diff --git a/README.md b/README.md
index 2edd811d316..446e3316709 100644
--- a/README.md
+++ b/README.md
@@ -45,7 +45,7 @@ To see how to Contribute, visit [Getting Started](./DEVELOPERS.md)
We are currently in Public Beta. Watch "releases" of this repo to get notified of major updates.
-
+
---
@@ -200,10 +200,12 @@ Our approach for client libraries is modular. Each sub-library is a standalone i
- [Arabic | العربية](/i18n/README.ar.md)
- [Albanian / Shqip](/i18n/README.sq.md)
- [Bangla / বাংলা](/i18n/README.bn.md)
+- [Bulgarian / Български](/i18n/README.bg.md)
- [Catalan / Català](/i18n/README.ca.md)
- [Danish / Dansk](/i18n/README.da.md)
- [Dutch / Nederlands](/i18n/README.nl.md)
- [English](https://github.com/supabase/supabase)
+- [Finnish / Suomalainen](/i18n/README.fi.md)
- [French / Français](/i18n/README.fr.md)
- [German / Deutsch](/i18n/README.de.md)
- [Greek / Ελληνικά](/i18n/README.gr.md)
diff --git a/SECURITY.md b/SECURITY.md
index 247288302c4..b257313bf5d 120000
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -1 +1 @@
-web/static/.well-known/security.txt
\ No newline at end of file
+apps/reference/static/.well-known/security.txt
diff --git a/apps/reference/.gitignore b/apps/reference/.gitignore
index 8ea2c34929e..6327667b400 100644
--- a/apps/reference/.gitignore
+++ b/apps/reference/.gitignore
@@ -19,5 +19,4 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
-# _supabase_js/sdk/**/*
-# !_supabase_js/sdk/.gitkeep
\ No newline at end of file
+**/*/generated
\ No newline at end of file
diff --git a/apps/reference/_api/usage.mdx b/apps/reference/_api/usage.mdx
index f9aaa960c54..09584d7a96b 100644
--- a/apps/reference/_api/usage.mdx
+++ b/apps/reference/_api/usage.mdx
@@ -334,6 +334,9 @@ POST https://api.supabase.com/v1/projects
"ap-south-1",
"sa-east-1"
]
+ },
+ "kps_enabled": {
+ "type": "boolean"
}
},
"required": [
@@ -511,6 +514,18 @@ GET https://api.supabase.com/v1/projects/{ref}/functions
```
+
+
+
+
+
+
+
+
+
+
+
+
@@ -583,7 +598,7 @@ POST https://api.supabase.com/v1/projects/{ref}/functions
"properties": {
"slug": {
"type": "string",
- "pattern": {}
+ "pattern": "/^[A-Za-z0-9_-]+$/"
},
"name": {
"type": "string"
@@ -667,6 +682,18 @@ POST https://api.supabase.com/v1/projects/{ref}/functions
```
+
+
+
+
+
+
+
+
+
+
+
+
@@ -814,6 +841,18 @@ GET https://api.supabase.com/v1/projects/{ref}/functions/{function_slug}
```
+
+
+
+
+
+
+
+
+
+
+
+
@@ -979,6 +1018,18 @@ PATCH https://api.supabase.com/v1/projects/{ref}/functions/{function_slug}
```
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1075,6 +1126,18 @@ DELETE https://api.supabase.com/v1/projects/{ref}/functions/{function_slug}
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1176,6 +1239,18 @@ GET https://api.supabase.com/v1/projects/{ref}/secrets
```
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1253,7 +1328,7 @@ POST https://api.supabase.com/v1/projects/{ref}/secrets
},
"value": {
"type": "string",
- "pattern": {}
+ "pattern": "/^(?!SUPABASE_).*/"
}
},
"required": [
@@ -1280,6 +1355,18 @@ POST https://api.supabase.com/v1/projects/{ref}/secrets
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1379,6 +1466,18 @@ DELETE https://api.supabase.com/v1/projects/{ref}/secrets
```
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/reference/_supabase_js_versioned_docs/.gitkeep b/apps/reference/_cli/generated/.gitkeep
similarity index 100%
rename from apps/reference/_supabase_js_versioned_docs/.gitkeep
rename to apps/reference/_cli/generated/.gitkeep
diff --git a/apps/reference/_cli/generated/config.mdx b/apps/reference/_cli/generated/config.mdx
deleted file mode 100644
index 4f69366e0f0..00000000000
--- a/apps/reference/_cli/generated/config.mdx
+++ /dev/null
@@ -1,337 +0,0 @@
----
-id: config
-slug: /config
-title: Configuration
-toc_max_heading_level: 3
----
-
-
-
-A `config.toml` file is generated after running `supabase init`.
-
-This file is located in the `supabase` folder under `supabase/config.toml`.
-
-
-
-## General {#general}
-
-### `project_id` {#project_id}
-
-A string used to distinguish different Supabase projects on the same host. Defaults to the working directory name when running `supabase init`.
-
-
-
- Required: true
-
-
- Default: None
-
-
-
-
-
-
-
-## Auth Settings {#auth}
-
-### `auth.site_url` {#auth.site_url}
-
-The base URL of your website. Used as an allow-list for redirects and for constructing URLs used in emails.
-
-
-
-
-
-### `auth.additional_redirect_urls` {#auth.additional_redirect_urls}
-
-A list of _exact_ URLs that auth providers are permitted to redirect to post authentication.
-
-
-
-
-
-### `auth.jwt_expiry` {#auth.jwt_expiry}
-
-How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 seconds (one week).
-
-
-
-
-
-### `auth.email.double_confirm_changes` {#auth.email.double_confirm_changes}
-
-If enabled, a user will be required to confirm any email change on both the old, and new email addresses. If disabled, only the new email is required to confirm.
-
-
-
-
-
-### `auth.email.enable_confirmations` {#auth.email.enable_confirmations}
-
-If enabled, users need to confirm their email address before signing in.
-
-
-
-
-
-### `api.max_rows` {#api.max_rows}
-
-The maximum number of rows returned from a view, table, or stored procedure. Limits payload size for accidental or malicious requests.
-
-
-
-
-
-### `db.major_version` {#db.major_version}
-
-The database major version to use. This has to be the same as your remote database's. Run `SHOW server_version;` on the remote database to check.
-
-
-
-
-
-
-
-## Dashboard Settings {#dashboard}
-
-### `studio.port` {#studio.port}
-
-Port to use for Supabase Studio.
-
-
-
- Required: true
-
-
- Default: 54323
-
-
-
-
-
-
-
-## Local Development {#local}
-
-### `inbucket.port` {#inbucket.port}
-
-Port to use for the email testing server web interface.
-
-Emails sent with the local dev setup are not actually sent - rather, they are monitored, and you can view the emails that would have been sent from the web interface.
-
-
-
-
diff --git a/apps/reference/_cli/generated/usage.mdx b/apps/reference/_cli/generated/usage.mdx
deleted file mode 100644
index 7235621cecb..00000000000
--- a/apps/reference/_cli/generated/usage.mdx
+++ /dev/null
@@ -1,1008 +0,0 @@
----
-id: usage
-slug: /usage
-title: Usage
-toc_max_heading_level: 3
----
-
-
-
-Supabase CLI provides you with tools to develop your application locally, and deploy your application to the Supabase platform.
-
-
-
-
-
-
-### Stop all local Supabase containers {#supabase-stop}
-
-
-
-```sh
-supabase stop [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for stop
-```
-
-
-
-
-
-
-### Show status of local Supabase containers {#supabase-status}
-
-
-
-```sh
-supabase status [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for status
-```
-
-
-
-
-
-
-### Start containers for Supabase local development {#supabase-start}
-
-
-
-```sh
-supabase start [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for start
-```
-
-
-
-
-
-
-## Manage Supabase secrets {#supabase-secrets}
-
-
-
-
-
-**Available Commands**
-
--
- supabase secrets list
-
-
--
- supabase secrets set
-
-
--
- supabase secrets unset
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for secrets
-```
-
-
-
-
-
-
-### Unset a secret(s) on Supabase {#supabase-secrets-unset}
-
-
-
-Unset a secret(s) from the linked Supabase project.
-
-```sh
-supabase secrets unset ... [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for unset
-```
-
-
-
-
-
-
-### Set a secret(s) on Supabase {#supabase-secrets-set}
-
-
-
-Set a secret(s) to the linked Supabase project.
-
-```sh
-supabase secrets set [flags] ...
-```
-
-
-
-
-
-**Options**
-
-```sh
- --env-file string Read secrets from a .env file.
- -h, --help help for set
-```
-
-
-
-
-
-
-### List all secrets on Supabase {#supabase-secrets-list}
-
-
-
-List all secrets in the linked project.
-
-```sh
-supabase secrets list [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for list
-```
-
-
-
-
-
-
-## Manage Supabase projects {#supabase-projects}
-
-
-
-
-
-**Available Commands**
-
--
- supabase projects create
-
-
--
- supabase projects list
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for projects
-```
-
-
-
-
-
-
-### List all Supabase projects {#supabase-projects-list}
-
-
-
-List all Supabase projects the logged-in user can access.
-
-```sh
-supabase projects list [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for list
-```
-
-
-
-
-
-
-### Create a project on Supabase {#supabase-projects-create}
-
-
-
-```sh
-supabase projects create [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- --db-password string Database password of the project.
- -h, --help help for create
- -i, --interactive Enables interactive mode.
- --org-id string Organization ID to create the project in.
- --plan string Select a plan that suits your needs. (default "free")
- --region string Select a region close to you for the best performance.
-```
-
-
-
-
-
-
-## Manage Supabase organizations {#supabase-orgs}
-
-
-
-
-
-**Available Commands**
-
--
- supabase orgs list
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for orgs
-```
-
-
-
-
-
-
-### List all organizations {#supabase-orgs-list}
-
-
-
-List all organizations the logged-in user belongs.
-
-```sh
-supabase orgs list [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for list
-```
-
-
-
-
-
-
-## Manage database migration scripts {#supabase-migration}
-
-
-
-
-
-**Available Commands**
-
--
- supabase migration list
-
-
--
- supabase migration new
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for migration
-```
-
-
-
-
-
-
-### Create an empty migration script {#supabase-migration-new}
-
-
-
-```sh
-supabase migration new [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for new
-```
-
-
-
-
-
-
-### List local and remote migrations {#supabase-migration-list}
-
-
-
-```sh
-supabase migration list [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for list
- -p, --password string Password to your remote Postgres database.
-```
-
-
-
-
-
-
-### Authenticate using an access token {#supabase-login}
-
-
-
-```sh
-supabase login [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for login
-```
-
-
-
-
-
-
-### Link to a Supabase project {#supabase-link}
-
-
-
-```sh
-supabase link [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for link
- -p, --password string Password to your remote Postgres database.
- --project-ref string Project ref of the Supabase project.
-```
-
-
-
-
-
-
-### Initialize a local project {#supabase-init}
-
-
-
-```sh
-supabase init [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for init
-```
-
-
-
-
-
-
-## Run code generation tools {#supabase-gen}
-
-
-
-
-
-**Available Commands**
-
--
- supabase gen types
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for gen
-```
-
-
-
-
-
-
-## Generate types from Postgres schema {#supabase-gen-types}
-
-
-
-
-
-**Available Commands**
-
--
- supabase gen types typescript
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for types
-```
-
-
-
-
-
-
-### Generate types for TypeScript {#supabase-gen-types-typescript}
-
-
-
-Generate types for TypeScript. Must specify either --local or --db-url
-
-```sh
-supabase gen types typescript [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- --db-url string Generate types from a database url.
- -h, --help help for typescript
- --local Generate types from the local dev database.
-```
-
-
-
-
-
-
-## Manage Supabase Edge functions {#supabase-functions}
-
-
-
-
-
-**Available Commands**
-
--
- supabase functions delete
-
-
--
- supabase functions deploy
-
-
--
- supabase functions new
-
-
--
- supabase functions serve
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for functions
-```
-
-
-
-
-
-
-### Serve a Function locally {#supabase-functions-serve}
-
-
-
-```sh
-supabase functions serve [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- --env-file string Path to an env file to be populated to the Function environment.
- -h, --help help for serve
- --no-verify-jwt Disable JWT verification for the Function.
-```
-
-
-
-
-
-
-### Create a new Function locally {#supabase-functions-new}
-
-
-
-```sh
-supabase functions new [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for new
-```
-
-
-
-
-
-
-### Deploy a Function to Supabase {#supabase-functions-deploy}
-
-
-
-Deploy a Function to the linked Supabase project.
-
-```sh
-supabase functions deploy [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for deploy
- --no-verify-jwt Disable JWT verification for the Function.
- --project-ref string Project ref of the Supabase project.
-```
-
-
-
-
-
-
-### Delete a Function from Supabase {#supabase-functions-delete}
-
-
-
-Delete a Function from the linked Supabase project. This does NOT remove the Function locally.
-
-```sh
-supabase functions delete [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for delete
- --project-ref string Project ref of the Supabase project.
-```
-
-
-
-
-
-
-## Manage local Postgres databases {#supabase-db}
-
-
-
-
-
-**Available Commands**
-
--
- supabase db branch
-
-
--
- supabase db diff
-
-
--
- supabase db push
-
-
--
- supabase db remote
-
-
--
- supabase db reset
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for db
-```
-
-
-
-
-
-
-### Resets the local database to current migrations {#supabase-db-reset}
-
-
-
-```sh
-supabase db reset [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for reset
-```
-
-
-
-
-
-
-## Manage remote databases {#supabase-db-remote}
-
-
-
-
-
-**Available Commands**
-
--
- supabase db remote changes
-
-
--
- supabase db remote commit
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for remote
- -p, --password string Password to your remote Postgres database.
-```
-
-
-
-
-
-
-### Commit remote changes as a new migration {#supabase-db-remote-commit}
-
-
-
-```sh
-supabase db remote commit [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for commit
-```
-
-
-
-
-
-
-### Show changes on the remote database {#supabase-db-remote-changes}
-
-
-
-Show changes on the remote database since last migration.
-
-```sh
-supabase db remote changes [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for changes
-```
-
-
-
-
-
-
-### Push new migrations to the remote database {#supabase-db-push}
-
-
-
-```sh
-supabase db push [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- --dry-run Print the migrations that would be applied, but don't actually apply them.
- -h, --help help for push
- -p, --password string Password to your remote Postgres database.
-```
-
-
-
-
-
-
-### Diffs the local database for schema changes {#supabase-db-diff}
-
-
-
-```sh
-supabase db diff [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -f, --file string Saves schema diff to a file.
- -h, --help help for diff
- -s, --schema strings List of schema to include. (default [public])
- --use-migra Use migra to generate schema diff.
-```
-
-
-
-
-
-
-## Manage local database branches {#supabase-db-branch}
-
-
-
-Manage local database branches. Each branch is associated with a separate local database. Forking remote databases is NOT supported.
-
-
-
-**Available Commands**
-
--
- supabase db branch create
-
-
--
- supabase db branch delete
-
-
--
- supabase db branch list
-
-
--
- supabase db branch switch
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for branch
-```
-
-
-
-
-
-
-### Switch the active branch {#supabase-db-branch-switch}
-
-
-
-```sh
-supabase db branch switch [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for switch
-```
-
-
-
-
-
-
-### List branches {#supabase-db-branch-list}
-
-
-
-```sh
-supabase db branch list [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for list
-```
-
-
-
-
-
-
-### Delete a branch {#supabase-db-branch-delete}
-
-
-
-```sh
-supabase db branch delete [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for delete
-```
-
-
-
-
-
-
-### Create a branch {#supabase-db-branch-create}
-
-
-
-```sh
-supabase db branch create [flags]
-```
-
-
-
-
-
-**Options**
-
-```sh
- -h, --help help for create
-```
-
-
diff --git a/apps/reference/_gotrue/config.mdx b/apps/reference/_gotrue/config.mdx
index dfa0090df45..9a00a5a380e 100644
--- a/apps/reference/_gotrue/config.mdx
+++ b/apps/reference/_gotrue/config.mdx
@@ -1,244 +1,35 @@
---
id: config
+slug: /config
title: Configuration
+toc_max_heading_level: 3
---
-## Security
+
-| Parameter | Type | Description |
-| :-------------------------------------------------------------------- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `SITE_URL` | `string` | **Required**. The base URL your site is located at. Currently used in combination with other settings to construct URLs used in emails. Any URI that shares a host with `SITE_URL` is a permitted value for `redirect_to` params (see `/authorize` etc.). |
-| `URI_ALLOW_LIST` | `string` | A comma separated list of URIs (e.g. `"https://foo.example.com,https://*.foo.example.com"`) which are permitted as valid `redirect_to` destinations. Defaults to [ ].
Supports wildcard matching through globbing. (e.g. `https://*.foo.example.com` will allow `https://a.foo.example.com` and `https://b.foo.example.com` to be accepted.)
Globbing is also supported on subdomains. (e.g. `https://foo.example.com/*` will allow `https://foo.example.com/page1` and `https://foo.example.com/page2` to be accepted.) For more common glob patterns, check out the [following link](https://pkg.go.dev/github.com/gobwas/glob#Compile). |
-| `OPERATOR_TOKEN` | `string` | The shared secret with an operator for this microservice. Used to verify requests have been proxied through the operator and the payload values can be trusted. |
-| `DISABLE_SIGNUP` | `bool` | When signup is disabled the only way to create new users is through invites. Defaults to `false`, all signups enabled. |
-| `EXTERNAL_EMAIL_ENABLED` | `bool` | Use this to disable email signups (users can still use external oauth providers to sign up / sign in) |
-| `EXTERNAL_PHONE_ENABLED` | `bool` | Use this to disable phone signups (users can still use external oauth providers to sign up / sign in) |
-| `RATE_LIMIT_TOKEN_REFRESH` | `string` | Rate limit the number of requests sent to `/token` |
-| `RATE_LIMIT_EMAIL_SENT` | `string` | Rate limit the number of emails sent per hr on the following endpoints: `/signup`, `/invite`, `/magiclink`, `/recover`, `/otp`, & `/user`. |
-| `PASSWORD_MIN_LENGTH` | `int` | Minimum password length, defaults to 6. |
+A `config.toml` file is generated after running `supabase init`.
-These options control additional security settings available in gotrue. If self-hosting, they need to be prefixed with `GOTRUE_SECURITY_` .
+This file is located in the `supabase` folder under `supabase/config.toml`.
-| Parameter | Type | Description |
-| :---------------------------------------------------------------------------------------------------- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `REFRESH_TOKEN_ROTATION_ENABLED` | `bool` | If refresh token rotation is enabled, gotrue will automatically detect malicious attempts to reuse a revoked refresh token. When a malicious attempt is detected, gotrue immediately revokes all tokens that descended from the offending token. |
-| `REFRESH_TOKEN_REUSE_INTERVAL` | `string` | This setting is only applicable if `REFRESH_TOKEN_ROTATION_ENABLED` is enabled. The reuse interval for a refresh token allows for exchanging the refresh token multiple times during the interval to support concurrency or offline issues. During the reuse interval, gotrue will not consider using a revoked token as a malicious attempt and will simply return the child refresh token. Only the previous revoked token can be reused. Using an old refresh token way before the current valid refresh token will trigger the reuse detection. |
-| `CAPTCHA_ENABLED` | `string` | Enables the captcha middleware. |
-| `CAPTCHA_PROVIDER` | `string` | The only captcha provider option supported is: `hcaptcha`. |
-| `CAPTCHA_SECRET` | `string` | The captcha secret token. Retrieve this from your captcha account. |
-| `CAPTCHA_TIMEOUT` | `string` | The http timeout on the captcha request. |
-| `UPDATE_PASSWORD_REQUIRE_REAUTHENTICATION` | `bool` | When enabled, this requires a user to reauthenticate before being able to update their password. |
-## API
-| Parameter | Type | Description |
-| :------------------------------------------------------ | :------- | :--------------------------------------------------------------------------------------------- |
-| `API_HOST` | `string` | Hostname to listen on. |
-| `PORT` | `number` | Port number to listen on. Defaults to `8081`. |
-| `REQUEST_ID_HEADER` | `string` | If you wish to inherit a request ID from the incoming request, specify the name in this value. |
-## Database
+
-| Parameter | Type | Description |
-| :---------------------------------------------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------- |
-| `DB_DRIVER` | `string` | **Required**. Chooses what dialect of database you want. Must be `postgres`. |
-| `DATABASE_URL` | `string` | **Required**. Connection string for the database. |
-| `DB_MAX_POOL_SIZE` | `int` | Sets the maximum number of open connections to the database. Defaults to 0 which is equivalent to an "unlimited" number of connections. |
-| `DB_NAMESPACE` | `string` | Specifies the schema in which the tables are to be created in. |
+## General {#general}
-## JSON Web Tokens (JWT)
-| Parameter | Type | Description |
-| :---------------------------------------------------------------- | :------- | :----------------------------------------------------------------------------------- |
-| `JWT_SECRET` | `string` | **Required**. The secret used to sign JWT tokens with. |
-| `JWT_EXP` | `number` | How long tokens are valid for in seconds. Defaults to 3600 (1 hour). |
-| `JWT_AUD` | `string` | The default JWT audience. Use audiences to group users. Defaults to `authenticated`. |
-| `JWT_ADMIN_GROUP_NAME` | `string` | The name of the admin group (if enabled). Defaults to `admin`. |
-| `JWT_DEFAULT_GROUP_NAME` | `string` | The default group to assign all new users to. |
-## External Authentication Providers
+### `project_id` {#project_id}
-We support `apple`, `azure`, `bitbucket`, `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin`, `notion`, `spotify`, `slack`, `twitch`, `twitter` and `workos` for external authentication.
+A string used to distinguish different Supabase projects on the same host. Defaults to the working directory name when running `supabase init`.
-Use the names as the keys underneath `external` to configure each separately.
-No external providers are required, but you must provide the required values if you choose to enable any.
+
+
Required: true
+
Default: None
+
-| Parameter | Type | Description |
-| :------------------------------------------------------------------ | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| `EXTERNAL_X_ENABLED` | `bool` | Whether this external provider is enabled or not |
-| `EXTERNAL_X_CLIENT_ID` | `string` | **Required**. The OAuth2 Client ID registered with the external provider. |
-| `EXTERNAL_X_SECRET` | `string` | **Required**. The OAuth2 Client Secret provided by the external provider when you registered. |
-| `EXTERNAL_X_REDIRECT_URI` | `string` | **Required**. Also known as the callback url, this is the URI an OAuth2 provider will redirect to with the `code` and `state` values. |
-| `EXTERNAL_X_URL` | `string` | The base URL used for constructing the URLs to request authorization and access tokens. Used by `gitlab` and `keycloak`. For `gitlab` it defaults to `https://gitlab.com`. For `keycloak` you need to set this to your realm url, (e.g. `https://keycloak.example.com/auth/realms/myrealm`) |
+
-### Apple OAuth
-To try out sign-in with Apple locally, you will need to do the following:
-
-1. Run GoTrue over `https` via a reverse proxy (like ngrok).
-2. Generate the `crt` and `key` file. See [here](https://www.freecodecamp.org/news/how-to-get-https-working-on-your-local-development-environment-in-5-minutes-7af615770eec/) for more information.
-3. Generate the `GOTRUE_EXTERNAL_APPLE_SECRET` by following this [post](https://medium.com/identity-beyond-borders/how-to-configure-sign-in-with-apple-77c61e336003)!
-
-## SMTP Configuration
-
-Sending email is not required, but highly recommended for password recovery. If `mailer_autoconfirm` is enabled, no emails will be sent out for `signup`, `recovery`, `invite`. Emails will only be sent out for `magiclink`.
-
-| Parameter | Type | Description |
-| :-------------------------------------------------------- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `SMTP_ADMIN_EMAIL` | `string` | **Required**. The `From` email address for all emails sent. |
-| `SMTP_HOST` | `string` | **Required**. The mail server hostname to send emails through. |
-| `SMTP_PORT` | `string` | **Required**. The port number to connect to the mail server on. |
-| `SMTP_USER` | `string` | **Required**. If the mail server requires authentication, the username to use. |
-| `SMTP_PASS` | `string` | **Required**. If the mail server requires authentication, the password to use. |
-| `SMTP_MAX_FREQUENCY` | `string` | Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email. The value is the number of seconds. Defaults to 60 seconds. |
-| `SMTP_SENDER_NAME` | `string` | Sets the name of the sender. Defaults to the `SMTP_ADMIN_EMAIL` if not used. |
-
-## Email
-
-These options control the emails sent from GoTrue.
-
-| Parameter | Type | Description |
-| :---------------------------------------------------------------------------------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `MAILER_AUTOCONFIRM` | `bool` | If you do not require email confirmation, you may set this to `true`. Defaults to `false`. |
-| `MAILER_SECURE_EMAIL_CHANGE_ENABLED` | `bool` | If `true`, send an email to both the user's current and new email with a confirmation link, otherwise send an email with confirmation link only to new email. Defaults to `true`. |
-| `MAILER_OTP_EXP` | `string` | Controls the duration an email link or otp is valid for. Defaults to 24 hrs. |
-| `MAILER_URLPATHS_INVITE` | `string` | URL path to use in the user invite email. Defaults to `/`. |
-| `MAILER_URLPATHS_CONFIRMATION` | `string` | URL path to use in the signup confirmation email. Defaults to `/`. |
-| `MAILER_URLPATHS_RECOVERY` | `string` | URL path to use in the password reset email. Defaults to `/`. |
-| `MAILER_URLPATHS_EMAIL_CHANGE` | `string` | URL path to use in the email change confirmation email. Defaults to `/`. |
-| `MAILER_SUBJECTS_INVITE` | `string` | Email subject to use for user invite. Defaults to `You have been invited`. |
-| `MAILER_SUBJECTS_CONFIRMATION` | `string` | Email subject to use for signup confirmation. Defaults to `Confirm Your Signup`. |
-| `MAILER_SUBJECTS_RECOVERY` | `string` | Email subject to use for password reset. Defaults to `Reset Your Password`. |
-| `MAILER_SUBJECTS_MAGIC_LINK` | `string` | Email subject to use for magic link email. Defaults to `Your Magic Link`. |
-| `MAILER_SUBJECTS_EMAIL_CHANGE` | `string` | Email subject to use for email change confirmation. Defaults to `Confirm Email Change`. |
-
-## Email Templates
-
-| Parameter | Type | Description |
-| :------------------------------------------------------------------ | :------- | :---------------------------------------------------------------------------------------------------------------------------- |
-| `MAILER_TEMPLATES_INVITE` | `string` | URL path to an email template to use when inviting a user. `SiteURL`, `Email`, and `ConfirmationURL` variables are available. |
-
-Default Content (if template is unavailable):
-
-```html
-
You have been invited
-
- You have been invited to create a user on {{ .SiteURL }}. Follow this link to
- accept the invite:
-
-```
-
-| Parameter | Type | Description |
-| :------------------------------------------------------------------------------ | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `MAILER_TEMPLATES_EMAIL_CHANGE` | `string` | URL path to an email template to use when confirming the change of an email address. `SiteURL`, `Email`, `NewEmail` and `ConfirmationURL` variables are available. |
-
-Default Content (if template is unavailable):
-
-```html
-
Confirm Change of Email
-
-
- Follow this link to confirm the update of your email from {{ .Email }} to {{
- .NewEmail }}:
-
-```
-
-### Phone Auth
-
-These options control the SMS-es sent from GoTrue.
-
-| Parameter | Type | Description |
-| :------------------------------------------------------ | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `SMS_AUTOCONFIRM` | `bool` | If you do not require phone confirmation, you may set this to `true`. Defaults to `false`. |
-| `SMS_MAX_FREQUENCY` | `number` | Controls the minimum amount of time that must pass before sending another sms otp. The value is the number of seconds. Defaults to 60 (1 minute)). |
-| `SMS_OTP_EXP` | `number` | Controls the duration an sms otp is valid for. |
-| `SMS_OTP_LENGTH` | `number` | Controls the number of digits of the sms otp sent. Valid otp lengths are between [6 - 10] digits |
-| `SMS_PROVIDER` | `string` | Available options are: `twilio`, `messagebird`, `textlocal`, and `vonage` |
-
-If you're using twilio, you can obtain your credentials from the [twilio dashboard](https://www.twilio.com/docs/usage/requests-to-twilio#credentials):
-
-You can find the `SMS_TWILIO_ACCOUNT_SID` and `SMS_TWILIO_AUTH_TOKEN` in the account info page of the twilio console dashboard.
-
-| Parameter | Type | Description |
-| :---------------------------------------------------------------------------- | :------- | :------------------------------------------- |
-| `SMS_TWILIO_ACCOUNT_SID` | `string` | Your twilio account string identifier (SID). |
-| `SMS_TWILIO_AUTH_TOKEN` | `string` | Your twilio auth token. |
-| `SMS_TWILIO_MESSAGE_SERVICE_SID` | `string` | Your twilio sender mobile number |
-
-If you're using MessageBird, you can obtain your credentials from the [MessageBird dashboard](https://dashboard.messagebird.com/en/developers/access):
-
-| Parameter | Type | Description |
-| :-------------------------------------------------------------------- | :------- | :----------------------------------------------------------- |
-| `SMS_MESSAGEBIRD_ACCESS_KEY` | `string` | Your MessageBird access key. |
-| `SMS_MESSAGEBIRD_ORIGINATOR` | `string` | Your MessageBird sender phone number with + or company name. |
-
-## Logging
-
-| Parameter | Type | Description |
-| :-------------------------------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------- |
-| `LOG_LEVEL` | `string` | Controls what log levels are output. Choose from `panic`, `fatal`, `error`, `warn`, `info`, or `debug`. Defaults to `info`. |
-| `LOG_FILE` | `string` | If you wish logs to be written to a file, set `log_file` to a valid file path. |
-
-## Opentracing
-
-Currently Datadog is the only tracer supported.
-
-| Parameter | Type | Description |
-| :-------------------------------------------------- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `TRACING_ENABLED` | `bool` | Whether tracing is enabled or not. Defaults to `false`. |
-| `TRACING_HOST` | `string` | The tracing destination. (e.g. `GOTRUE_TRACING_HOST=127.0.0.1`) |
-| `TRACING_PORT` | `int` | The port for the tracing host. |
-| `TRACING_TAGS` | `string` | A comma separated list of key:value pairs. These key value pairs will be added as tags to all opentracing spans. (e.g. `GOTRUE_TRACING_TAGS="tag1:value1,tag2:value2"`) |
-| `SERVICE_NAME` | `string` | The name to use for the service. |
-
-## Webhooks
-
-| Parameter | Type | Description |
-| :---------------------------------------------------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `WEBHOOK_URL` | `string` | URL of the webhook receiver endpoint. This will be called when events like `validate`, `signup` or `login` occur. |
-| `WEBHOOK_SECRET` | `string` | Shared secret to authorize webhook requests. This secret signs the [JSON Web Signature](https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-41) of the request. You _should_ use this to verify the integrity of the request. Otherwise others can feed your webhook receiver with fake data. |
-| `WEBHOOK_RETRIES` | `number` | How often GoTrue should try a failed hook. |
-| `WEBHOOK_TIMEOUT_SEC` | `number` | Time between retries (in seconds). |
-| `WEBHOOK_EVENTS` | `list` | Which events should trigger a webhook. You can provide a comma separated list. For example to listen to all events, provide the values `validate,signup,login`. |
diff --git a/apps/reference/_storage/generated/config.mdx b/apps/reference/_storage/generated/config.mdx
deleted file mode 100644
index 2cfc75f1a27..00000000000
--- a/apps/reference/_storage/generated/config.mdx
+++ /dev/null
@@ -1,264 +0,0 @@
----
-id: config
-slug: /config
-title: Configuration
-toc_max_heading_level: 3
----
-
-
-
-A sample `.env` file is located in the [storage repository](https://github.com/supabase/storage-api/blob/master/.env.sample).
-
-Use this file to configure your environment variables for your Storage server.
-
-
-
-
-
-
-## General {#general}
-
-
-
-### `ANON_KEY` {#ANON_KEY}
-
-A long-lived JWT with anonymous Postgres privileges.
-
-
-
-
Required: true
-
Default: None
-
-
-
-
-
-### `SERVICE_KEY` {#SERVICE_KEY}
-
-A long-lived JWT with Postgres privileges to bypass Row Level Security.
-
-
-
-
Required: true
-
Default: None
-
-
-
-
-
-### `TENANT_ID` {#TENANT_ID}
-
-The ID of a Storage tenant.
-
-
-
-
Required: true
-
Default: None
-
-
-
-
-
-### `REGION` {#REGION}
-
-Region of your S3 bucket.
-
-
-
-
Required: true
-
Default: None
-
-
-
-
-
-### `GLOBAL_S3_BUCKET` {#GLOBAL_S3_BUCKET}
-
-Name of your S3 bucket.
-
-
-
-
Required: true
-
Default: None
-
-
-
-
-
-### `POSTGREST_URL` {#POSTGREST_URL}
-
-The URL of your PostgREST server.
-
-
-
-
Required: true
-
Default: None
-
-
-
-
-
-### `PGRST_JWT_SECRET` {#PGRST_JWT_SECRET}
-
-A JWT Secret for the PostgREST database.
-
-
-
-
Required: true
-
Default: None
-
-
-
-
-
-### `DATABASE_URL` {#DATABASE_URL}
-
-The URL of your Postgres database.
-
-
-
-
-HTTP headers.
-`cacheControl`: string, the `Cache-Control: max-age=` seconds value.
-`contentType`: string, the `Content-Type` header value. Should be specified if using a `fileBody` that is neither `Blob` nor `File` nor `FormData`, otherwise will default to `text/plain;charset=UTF-8`.
-`upsert`: boolean, whether to perform an upsert.
-
-