Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/docs/content/guides/ai/integrations/roboflow.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ data=[{'predictions': {'time': 0.08492901099998562, 'image': {'width': 640, 'hei

You can use the Supabase vector database functionality to store and query CLIP embeddings.

Roboflow Inference provides a HTTP interface through which you can calculate image and text embeddings using CLIP.
Roboflow Inference provides an HTTP interface through which you can calculate image and text embeddings using CLIP.

### Step 1: Install and start Roboflow Inference

Expand Down
4 changes: 2 additions & 2 deletions apps/docs/content/guides/api/securing-your-api.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ notify pgrst, 'reload config';

<$Partial path="db_pre_request_warning.mdx" />

Inside the function you can perform any additional checks on the request headers or JWT and raise an exception to prevent the request from completing. For example, this exception raises a HTTP 402 Payment Required response with a `hint` and additional `X-Powered-By` header:
Inside the function you can perform any additional checks on the request headers or JWT and raise an exception to prevent the request from completing. For example, this exception raises an HTTP 402 Payment Required response with a `hint` and additional `X-Powered-By` header:

```sql
raise sqlstate 'PGRST' using
Expand Down Expand Up @@ -186,7 +186,7 @@ You can only rate-limit `POST`, `PUT`, `PATCH` and `DELETE` requests. This is be
Outline:

- A new row is added to a `private.rate_limits` table each time a modifying action is done to the database containing the IP address and the timestamp of the action.
- If there are over 100 requests from the same IP address in the last 5 minutes, the request is rejected with a HTTP 420 code.
- If there are over 100 requests from the same IP address in the last 5 minutes, the request is rejected with an HTTP 420 code.

Create the table:

Expand Down
6 changes: 3 additions & 3 deletions apps/docs/content/guides/auth/auth-hooks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ A [Postgres function](/docs/guides/database/functions) can be configured as a ho
</TabPanel>
<TabPanel id="http" label="HTTP Endpoint">

A HTTP Hook is an endpoint which takes in a JSON event payload and returns a JSON response. You can use any HTTP endpoint as a Hook, including an endpoint in your application. The easiest way to create a HTTP hook is to create a [Supabase Edge Function](/docs/guides/functions/quickstart).
An HTTP Hook is an endpoint which takes in a JSON event payload and returns a JSON response. You can use any HTTP endpoint as a Hook, including an endpoint in your application. The easiest way to create an HTTP hook is to create a [Supabase Edge Function](/docs/guides/functions/quickstart).

</TabPanel>
</Tabs>
Expand Down Expand Up @@ -97,7 +97,7 @@ HTTP Hooks in Supabase follow the [Standard Webhooks Specification](https://www.

When the request is made to the HTTP hook, you should use the [Standard Webhooks libraries](https://github.com/standard-webhooks/standard-webhooks/tree/main/libraries) to verify these headers.

When a HTTP hook is created, the secret generated should be of the `v1,whsec_<base64-secret>` format:
When an HTTP hook is created, the secret generated should be of the `v1,whsec_<base64-secret>` format:

- `v1` denotes the version of the hook
- `whsec_` signifies that the secret is symmetric
Expand Down Expand Up @@ -303,7 +303,7 @@ Here's an example:
}
```

Errors returned from a Postgres Hook are not retry-able. When an error is returned, the error is propagated from the hook to Supabase Auth and translated into a HTTP error which is returned to your application. Supabase Auth will only take into account the error and disregard the rest of the payload.
Errors returned from a Postgres Hook are not retry-able. When an error is returned, the error is propagated from the hook to Supabase Auth and translated into an HTTP error which is returned to your application. Supabase Auth will only take into account the error and disregard the rest of the payload.

</TabPanel>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ This response will block the user creation and return the error message to the c

## Examples

Each of the following examples shows how to use the `before-user-created` hook to control signup behavior. Each use case includes both a HTTP implementation (e.g. using an Edge Function) and a SQL implementation (Postgres function).
Each of the following examples shows how to use the `before-user-created` hook to control signup behavior. Each use case includes both an HTTP implementation (e.g. using an Edge Function) and a SQL implementation (Postgres function).

<Tabs
scrollable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ revoke all
</TabPanel>
<TabPanel id="sql-send-email-on-failed-password-attempt" label="Send email notification on failed password attempts">

You can notify a user via email instead of blocking the user. To do so, make use of [Supabase Vault](/docs/guides/database/vault) to store the API Key of our mail provider and use [`pg_net`](/docs/guides/database/extensions/pg_net) to send a HTTP request to our email provider to send the email. Ensure that you have configured a sender signature for the email account which you are sending emails from.
You can notify a user via email instead of blocking the user. To do so, make use of [Supabase Vault](/docs/guides/database/vault) to store the API Key of our mail provider and use [`pg_net`](/docs/guides/database/extensions/pg_net) to send an HTTP request to our email provider to send the email. Ensure that you have configured a sender signature for the email account which you are sending emails from.

First, create a table to track sign in attempts.

Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/guides/auth/auth-mfa.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ However, encountering a different AAL level on the server may not actually be a
3. User has lost their authenticator device and is confused about the next
steps.

We thus recommend you redirect users to a page where they can authenticate using their additional factor, instead of rendering a HTTP 401 Unauthorized or HTTP 403 Forbidden content.
We thus recommend you redirect users to a page where they can authenticate using their additional factor, instead of rendering an HTTP 401 Unauthorized or HTTP 403 Forbidden content.

### APIs

Expand Down
4 changes: 2 additions & 2 deletions apps/docs/content/guides/auth/third-party/firebase-auth.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const supabase = createClient(
)
```

Make sure the all users in your application have the `role: 'authenticated'` [custom claim](https://firebase.google.com/docs/auth/admin/custom-claims) set. If you're using the `onCreate` Cloud Function to add this custom claim to newly signed up users, you will need to call `getIdToken(/* forceRefresh */ true)` immediately after sign up as the `onCreate` function does not run synchronously.
Make sure all users in your application have the `role: 'authenticated'` [custom claim](https://firebase.google.com/docs/auth/admin/custom-claims) set. If you're using the `onCreate` Cloud Function to add this custom claim to newly signed up users, you will need to call `getIdToken(/* forceRefresh */ true)` immediately after sign up as the `onCreate` function does not run synchronously.

</TabPanel>

Expand All @@ -58,7 +58,7 @@ await Supabase.initialize(
);
```

Make sure the all users in your application have the `role: 'authenticated'` [custom claim](https://firebase.google.com/docs/auth/admin/custom-claims) set. If you're using the `onCreate` Cloud Function to add this custom claim to newly signed up users, you will need to call `getIdToken(/* forceRefresh */ true)` immediately after sign up as the `onCreate` function does not run synchronously.
Make sure all users in your application have the `role: 'authenticated'` [custom claim](https://firebase.google.com/docs/auth/admin/custom-claims) set. If you're using the `onCreate` Cloud Function to add this custom claim to newly signed up users, you will need to call `getIdToken(/* forceRefresh */ true)` immediately after sign up as the `onCreate` function does not run synchronously.

</TabPanel>
</$Show>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ Now to setup the RLS policies for each tables:

```sql
-- Create a private schema to store all security definer functions utils
-- As such functions should never be in a API exposed schema
-- As such functions should never be in an API exposed schema
create schema if not exists private;
-- Helper function for role checks
create or replace function private.get_user_org_role(org_id bigint, user_id uuid)
Expand Down
12 changes: 6 additions & 6 deletions apps/docs/content/guides/realtime/broadcast.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ You can use the Supabase client libraries to send Broadcast messages.


/**
* Sending a message after subscribing will use Websockets
* Sending a message after subscribing will use WebSockets
*/
myChannel.subscribe((status) => {
if (status !== 'SUBSCRIBED') {
Expand Down Expand Up @@ -325,7 +325,7 @@ You can use the Supabase client libraries to send Broadcast messages.
);
print(res);

// Sending a message after subscribing will use Websockets
// Sending a message after subscribing will use WebSockets
myChannel.subscribe((status, error) {
if (status != RealtimeSubscribeStatus.subscribed) {
return;
Expand All @@ -352,7 +352,7 @@ You can use the Supabase client libraries to send Broadcast messages.
// Sending a message before subscribing will use HTTP
await myChannel.broadcast(event: "shout", message: ["message": "HI"])

// Sending a message after subscribing will use Websockets
// Sending a message after subscribing will use WebSockets
await myChannel.subscribe()
try await myChannel.broadcast(
event: "shout",
Expand All @@ -376,7 +376,7 @@ You can use the Supabase client libraries to send Broadcast messages.
put("message", "Hi")
})

// Sending a message after subscribing will use Websockets
// Sending a message after subscribing will use WebSockets
myChannel.subscribe(blockUntilSubscribed = true)
channelB.broadcast(
event = "shout",
Expand All @@ -401,7 +401,7 @@ You can use the Supabase client libraries to send Broadcast messages.
```python
my_channel = supabase.channel('test-channel')

# Sending a message after subscribing will use Websockets
# Sending a message after subscribing will use WebSockets
def on_subscribe(status, err):
if status != RealtimeSubscribeStates.SUBSCRIBED:
return
Expand Down Expand Up @@ -909,7 +909,7 @@ SELECT realtime.send (

#### Setup realtime authorization

Realtime Authorization is required and enabled by default. To allow your users to listen to messages from topics, create a RLS (Row Level Security) policy:
Realtime Authorization is required and enabled by default. To allow your users to listen to messages from topics, create an RLS (Row Level Security) policy:

```sql
CREATE POLICY "authenticated can receive broadcasts"
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/guides/storage/debugging/error-codes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ Here's a list of the most common error codes and their potential resolutions:
Indicates that the resource is not found or you don't have the correct permission to access it
**Resolution:**

- Add a RLS policy to grant permission to the resource. See our [Access Control docs](/docs/guides/storage/security/access-control) for more information.
- Add an RLS policy to grant permission to the resource. See our [Access Control docs](/docs/guides/storage/security/access-control) for more information.
- Ensure you include the user `Authorization` header
- Verify the object exists

Expand Down
2 changes: 1 addition & 1 deletion apps/docs/content/guides/telemetry/log-drains.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ This will create an infinite loop, as we are generating an additional log event

2. Configure the HTTP Drain

Create a HTTP drain under the [Project Settings > Log Drains](/dashboard/project/_/settings/log-drains).
Create an HTTP drain under the [Project Settings > Log Drains](/dashboard/project/_/settings/log-drains).

- Disable the Gzip, as we want to receive the payload without compression.
- Under URL, set it to your edge function URL `https://[PROJECT REF].supabase.co/functions/v1/hello-world`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ It can be accessed in a project's [Email Templates](/dashboard/project/_/auth/te

If you need to update a user's meta-data, you can do so with the [`updateUser`](/docs/reference/javascript/auth-updateuser?example=update-the-users-metadata) function.

The meta-data can be used to store a users language preferences. You could then use "if statements" in the email template to set the response for a specific language:
The meta-data can be used to store a user's language preferences. You could then use "if statements" in the email template to set the response for a specific language:

```html
{{if eq .Data.language "en" }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Add pgbouncer=true to the connection string.

## `Max client connections reached`

Checkout this [guide](https://github.com/orgs/supabase/discussions/22305) for managing this error
Check out this [guide](https://github.com/orgs/supabase/discussions/22305) for managing this error

## `Server has closed the connection`

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ http_status_code = 500
message = "error finding user: sql: Scan error on column 'confirmation_token': converting NULL to string is unsupported"
---

If you encounter a HTTP 500 error during authentication with the message `error finding user: sql: Scan error on column "confirmation_token": converting NULL to string is unsupported`, this typically indicates that the GoTrue Auth service found a `NULL` value in the `auth.users.confirmation_token` column, where a non-nullable string is expected.
If you encounter an HTTP 500 error during authentication with the message `error finding user: sql: Scan error on column "confirmation_token": converting NULL to string is unsupported`, this typically indicates that the GoTrue Auth service found a `NULL` value in the `auth.users.confirmation_token` column, where a non-nullable string is expected.

To resolve this, update the `confirmation_token` to an empty string where it is `NULL`. You can execute the following SQL query in the [SQL Editor](/dashboard/project/_/sql/new):

Expand Down
4 changes: 2 additions & 2 deletions apps/docs/docs/ref/javascript/v1/upgrade-guide.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ description: 'Learn how to upgrade to supabase-js v2.'

supabase-js v2 focuses on "quality-of-life" improvements for developers and addresses some of the largest pain points in v1. v2 includes type support, a rebuilt Auth library with async methods, improved errors, and more.

No new features will be added to supabase-js v1 , but we'll continuing merging security fixes to v1, with maintenance patches for the next 3 months.
No new features will be added to supabase-js v1, but we'll continue merging security fixes to v1, with maintenance patches for the next 3 months.

## Upgrade the client library

Expand Down Expand Up @@ -462,7 +462,7 @@ The cookie-related methods like `setAuthCookie` and `getUserByCookie` have been
For Next.js you can use the [Auth Helpers](https://supabase.com/docs/guides/auth/auth-helpers/nextjs) to help you manage cookies.
If you can't use the Auth Helpers, you can use [server-side rendering](https://supabase.com/docs/guides/auth/server-side-rendering).

Some the [PR](https://github.com/supabase/gotrue-js/pull/340) for additional background information.
See the [PR](https://github.com/supabase/gotrue-js/pull/340) for additional background information.

### Data methods

Expand Down
4 changes: 2 additions & 2 deletions apps/docs/docs/ref/kotlin/installing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/supab
- [**postgrest-kt**](https://github.com/supabase-community/supabase-kt/tree/master/Postgrest)
- Other plugins also available [here](https://github.com/supabase-community/supabase-kt/tree/master/plugins)

Checkout the different READMEs for information about supported Kotlin targets.
Check out the different READMEs for information about supported Kotlin targets.

*Note that the minimum Android SDK version is 26. For lower versions, you need to enable [core library desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring).*

Expand Down Expand Up @@ -96,7 +96,7 @@ custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/supab
<RefSubLayout.Details>

You can find a list of engines [here](https://ktor.io/docs/http-client-engines.html)
- Note that not all Ktor engines support Websockets. So if you plan to use the Realtime module, make sure to use an engine that supports Websockets. Checkout the [engine limitations](https://ktor.io/docs/client-engines.html#limitations) for more information.
- Note that not all Ktor engines support WebSockets. So if you plan to use the Realtime module, make sure to use an engine that supports WebSockets. Check out the [engine limitations](https://ktor.io/docs/client-engines.html#limitations) for more information.
- If using `supabase-kt` 3.0.0 and above, you need to use Ktor version 3.0.0-rc-1 or later.

</RefSubLayout.Details>
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/docs/ref/kotlin/v2/installing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/supab
<RefSubLayout.Details>

You can find a list of engines [here](https://ktor.io/docs/http-client-engines.html)
Note that not all Ktor engines support Websockets. So if you plan to use the Realtime module, make sure to use an engine that supports Websockets. Checkout the [engine limitations](https://ktor.io/docs/client-engines.html#limitations) for more information.
Note that not all Ktor engines support WebSockets. So if you plan to use the Realtime module, make sure to use an engine that supports WebSockets. Check out the [engine limitations](https://ktor.io/docs/client-engines.html#limitations) for more information.

</RefSubLayout.Details>
<RefSubLayout.Examples>
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/docs/ref/realtime/realtime.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ There are two versions of this server: `Realtime` and `Realtime RLS`.
`Realtime RLS` server works by:

1. polling PostgreSQL's replication functionality (using PostgreSQL's logical decoding and [wal2json](https://github.com/eulerto/wal2json) output plugin)
2. passing database changes to a [Write Ahead Log Realtime Unified Security (WALRUS)](https://github.com/supabase/walrus) PostgresSQL function and receiving a list of authorized subscribers depending on Row Level Security (RLS) policies
2. passing database changes to a [Write Ahead Log Realtime Unified Security (WALRUS)](https://github.com/supabase/walrus) PostgreSQL function and receiving a list of authorized subscribers depending on Row Level Security (RLS) policies
3. converting the changes into JSON
4. broadcasting to authorized subscribers over WebSockets

Expand Down
2 changes: 1 addition & 1 deletion apps/docs/docs/ref/self-hosting-realtime/introduction.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ hideTitle: true
`Realtime RLS` server works by:

1. Polling PostgreSQL's replication functionality (using PostgreSQL's logical decoding and [wal2json](https://github.com/eulerto/wal2json) output plugin)
2. Passing database changes to a [Write Ahead Log Realtime Unified Security (WALRUS)](https://github.com/supabase/walrus) PostgresSQL function and receiving a list of authorized subscribers depending on Row Level Security (RLS) policies
2. Passing database changes to a [Write Ahead Log Realtime Unified Security (WALRUS)](https://github.com/supabase/walrus) PostgreSQL function and receiving a list of authorized subscribers depending on Row Level Security (RLS) policies
3. Converting the changes into JSON
4. Broadcasting to authorized subscribers over WebSockets

Expand Down
Loading
Loading