From 3fe7613b42ca87907225990bb38189ee4202c0c8 Mon Sep 17 00:00:00 2001 From: Oliver Rice Date: Mon, 25 Sep 2023 16:17:31 -0500 Subject: [PATCH] Expand Serverless APIs to REST + GraphQL (#17654) * graphql section * fix(federation): markdown image links * feat(federation): support mkdocs admonition title * feat(federation): remark pymdown tab support * fix codehike path * graphql icon renders * replace serverless-apis with REST * run prettier * update serverless apis ref * remove GraphQL and Realtime references from REST docs * move realtime example to realtime overview section * new section for apis * prettier * product label * move realtime back to products * feat: graphql nav menu + simplified path * chore: remove console log --------- Co-authored-by: Greg Richardson --- .../NavigationMenu/HomeMenuIconPicker.tsx | 9 +- .../NavigationMenu/HomeMenuIcons.tsx | 21 +- .../NavigationMenu.constants.ts | 72 +- .../NavigationMenu/NavigationMenu.tsx | 5 + .../NavigationMenuGuideListItems.tsx | 8 +- .../components/Navigation/RefSwitcher.tsx | 2 +- apps/docs/components/index.tsx | 4 +- apps/docs/layouts/SiteLayout.tsx | 8 +- apps/docs/lib/mdx/plugins/remarkAdmonition.ts | 17 +- apps/docs/next.config.mjs | 1 + apps/docs/pages/guides/api.mdx | 55 +- .../docs/pages/guides/api/creating-routes.mdx | 132 +- .../pages/guides/api/graphql/graphiql.mdx | 22 - apps/docs/pages/guides/api/quickstart.mdx | 58 - .../docs/pages/guides/graphql/[[...slug]].tsx | 152 ++ apps/docs/pages/guides/realtime.mdx | 57 + apps/docs/public/img/icons/menu/graphql.svg | 5 + apps/docs/public/img/icons/menu/rest.svg | 5 + apps/docs/public/sitemap.xml | 1750 ++++++++++------- 19 files changed, 1367 insertions(+), 1016 deletions(-) delete mode 100644 apps/docs/pages/guides/api/graphql/graphiql.mdx create mode 100644 apps/docs/pages/guides/graphql/[[...slug]].tsx create mode 100644 apps/docs/public/img/icons/menu/graphql.svg create mode 100644 apps/docs/public/img/icons/menu/rest.svg diff --git a/apps/docs/components/Navigation/NavigationMenu/HomeMenuIconPicker.tsx b/apps/docs/components/Navigation/NavigationMenu/HomeMenuIconPicker.tsx index bc7c67c60d3..38bcff6c79b 100644 --- a/apps/docs/components/Navigation/NavigationMenu/HomeMenuIconPicker.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/HomeMenuIconPicker.tsx @@ -5,6 +5,7 @@ import { IconMenuCli, IconMenuCsharp, IconMenuDatabase, + IconMenuGraphQL, IconMenuEdgeFunctions, IconMenuFlutter, IconMenuGettingStarted, @@ -16,7 +17,7 @@ import { IconMenuRealtime, IconMenuResources, IconMenuSelfHosting, - IconMenuServerlessApis, + IconMenuRestApis, IconMenuStorage, IconMenuSwift, IconMenuStatus, @@ -32,8 +33,10 @@ function getMenuIcon(menuKey: string, width: number = 16, height: number = 16) { return case 'database': return - case 'serverless-apis': - return + case 'rest': + return + case 'graphql': + return case 'auth': return case 'edge-functions': diff --git a/apps/docs/components/Navigation/NavigationMenu/HomeMenuIcons.tsx b/apps/docs/components/Navigation/NavigationMenu/HomeMenuIcons.tsx index 4d2e53f6ea2..b29f9275e43 100644 --- a/apps/docs/components/Navigation/NavigationMenu/HomeMenuIcons.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/HomeMenuIcons.tsx @@ -23,6 +23,25 @@ export function IconMenuHome({ width = 16, height = 16 }: HomeMenuIcon) { ) } +export function IconMenuGraphQL({ width = 16, height = 16 }: HomeMenuIcon) { + return ( + + + + ) +} + export function IconMenuApi({ width = 16, height = 16 }: HomeMenuIcon) { return ( {props.title ?? props.id} @@ -30,7 +30,7 @@ const HeaderLink = React.memo(function HeaderLink(props: { const ContentAccordionLink = React.memo(function ContentAccordionLink(props: any) { const router = useRouter() const { isDarkMode } = useTheme() - const activeItem = props.subItem.url === router.pathname + const activeItem = props.subItem.url === router.asPath const activeItemRef = useRef(null) const LinkContainer = (props) => { @@ -96,7 +96,7 @@ const ContentAccordionLink = React.memo(function ContentAccordionLink(props: any { useEffect(() => { setOpen(false) - }, [router.pathname]) + }, [router.asPath]) return (
diff --git a/apps/docs/components/index.tsx b/apps/docs/components/index.tsx index c837ee2c74b..5d53667fe6d 100644 --- a/apps/docs/components/index.tsx +++ b/apps/docs/components/index.tsx @@ -37,7 +37,7 @@ import { IconMenuHome, IconMenuGettingStarted, IconMenuDatabase, - IconMenuServerlessApis, + IconMenuRestApis, IconMenuAuth, IconMenuEdgeFunctions, IconMenuRealtime, @@ -104,7 +104,7 @@ const components = { IconMenuHome, IconMenuGettingStarted, IconMenuDatabase, - IconMenuServerlessApis, + IconMenuRestApis, IconMenuAuth, IconMenuEdgeFunctions, IconMenuRealtime, diff --git a/apps/docs/layouts/SiteLayout.tsx b/apps/docs/layouts/SiteLayout.tsx index 953cb518817..15c841f2187 100644 --- a/apps/docs/layouts/SiteLayout.tsx +++ b/apps/docs/layouts/SiteLayout.tsx @@ -23,8 +23,12 @@ const levelsData = { name: 'Database', }, api: { - icon: '/docs/img/icons/menu/database', - name: 'Serverless APIs', + icon: '/docs/img/icons/menu/rest', + name: 'REST API', + }, + graphql: { + icon: '/docs/img/icons/menu/graphql', + name: 'GraphQL', }, auth: { icon: '/docs/img/icons/menu/auth', diff --git a/apps/docs/lib/mdx/plugins/remarkAdmonition.ts b/apps/docs/lib/mdx/plugins/remarkAdmonition.ts index a9a212d2825..33b8110dfa0 100644 --- a/apps/docs/lib/mdx/plugins/remarkAdmonition.ts +++ b/apps/docs/lib/mdx/plugins/remarkAdmonition.ts @@ -15,14 +15,17 @@ const remarkMkDocsAdmonition = function () { const [firstChild] = paragraph.children if (firstChild?.type === 'text') { - const match = firstChild.value.match(/^!!! ?(.*?)\n(.*)/s) + // Look for 3 '!', followed by an admonition type, followed by + // an optionally quoted title, followed by optional newlines of text + const match = firstChild.value.match(/^!!! ?("?)(.+)\1 ?\n?((?:.|\n)*)/) if (!match) { return } - // Extract the admonition type along with the remaining text - const [, type, value] = match + // Extract the admonition type, title, and remaining text + const [, , typeTitle, value] = match + const [, type, title] = typeTitle.match(/^(.+?) ?(?:"(.*)")?$/) // Rewrite the node's value to remove the admonition syntax firstChild.value = value @@ -46,6 +49,14 @@ const remarkMkDocsAdmonition = function () { children, } + if (title) { + admonitionElement.attributes.push({ + type: 'mdxJsxAttribute', + name: 'label', + value: title, + }) + } + // Overwrite original node with new element parent.children.splice(index, 1, admonitionElement) } diff --git a/apps/docs/next.config.mjs b/apps/docs/next.config.mjs index 93b3cd0df9b..3780ffe0193 100644 --- a/apps/docs/next.config.mjs +++ b/apps/docs/next.config.mjs @@ -52,6 +52,7 @@ const nextConfig = { domains: [ 'avatars.githubusercontent.com', 'github.com', + 'supabase.github.io', 'user-images.githubusercontent.com', 'raw.githubusercontent.com', 'weweb-changelog.ghost.io', diff --git a/apps/docs/pages/guides/api.mdx b/apps/docs/pages/guides/api.mdx index 5ac4bc65ba3..21b68b980fb 100644 --- a/apps/docs/pages/guides/api.mdx +++ b/apps/docs/pages/guides/api.mdx @@ -2,23 +2,24 @@ import Layout from '~/layouts/DefaultGuideLayout' export const meta = { id: 'api', - title: 'Serverless APIs', - description: 'Auto-generating and Realtime APIs.', + title: 'REST API', + description: 'Auto-generating REST API.', sidebar_label: 'Overview', video: 'https://www.youtube.com/v/rPAJJFdtPw0', } -Supabase auto-generates three types of API directly from your database schema. +Supabase auto-generates an API directly from your database schema allowing you to connect to your database through a restful interface, directly from the browser. -- REST - connect to your database through a restful interface, directly from the browser. -- GraphQL - manipulate your database using a graph-like query language. -- Realtime - listen to database changes. - -All the APIs are auto-generated from your database and are designed to get you building as fast as possible, without writing a single line of code. +The API is auto-generated from your database and is designed to get you building as fast as possible, without writing a single line of code. You can use them directly from the browser (two-tier architecture), or as a complement to your own API server (three-tier architecture). -## Features +## Features [#rest-api-overview] + +Supabase provides a RESTful API using [PostgREST](https://postgrest.org/). This is a very thin API layer on top of Postgres. +It exposes everything you need from a CRUD API at the URL `https://.supabase.co/rest/v1/`. + +The REST interface is automatically reflected from your database's schema and is: - **Instant and auto-generated.**
As you update your database the changes are immediately accessible through your API. - **Self documenting.**
Supabase generates documentation in the Dashboard which updates as you make database changes. @@ -26,19 +27,14 @@ You can use them directly from the browser (two-tier architecture), or as a comp - **Fast.**
Our benchmarks for basic reads are more than 300% faster than Firebase. The API is a very thin layer on top of Postgres, which does most of the heavy lifting. - **Scalable.**
The API can serve thousands of simultaneous requests, and works well for Serverless workloads. -## REST API [#rest-api-overview] - -Supabase provides a RESTful API using [PostgREST](https://postgrest.org/). This is a very thin API layer on top of Postgres. -It provides everything you need from a CRUD API at the URL `https://.supabase.co/rest/v1/`. - -The REST interface is automatically reflected from your database's schema and supports: +The reflected API is designed to retain as much of Postgres' capability as possible including: - Basic CRUD operations (Create/Read/Update/Delete) - Arbitrarily deep relationships among tables/views, functions that return table types can also nest related tables/views. - Works with Postgres Views, Materialized Views and Foreign Tables - Works with Postgres Functions - User defined computed columns and computed relationships -- Works with the Postgres security model - including Row Level Security, Roles, and Grants. +- The Postgres security model - including Row Level Security, Roles, and Grants. The REST API resolves all requests to a single SQL statement leading to fast response times and high throughput. @@ -47,33 +43,6 @@ Reference: - [Docs](https://postgrest.org/) - [Source Code](https://github.com/PostgREST/postgrest) -## GraphQL API [#graphql-api-overview] - -Supabase uses [pg_graphql](https://supabase.github.io/pg_graphql/) to expose a GraphQL API endpoint at `https://.supabase.co/graphql/v1/`. -You can introspect and query the GraphQL API of an existing Supabase project within Studio [here](https://supabase.com/dashboard/project/_/api/graphiql), -or navigate there manually at `API Docs > GraphQL > GraphiQL`. - -The GraphQL interface is automatically reflected from your database's schema and supports: - -- Basic CRUD operations (Create/Read/Update/Delete) -- Support for Tables, Views, Materialized Views, and Foreign Tables -- Arbitrarily deep relationships among tables/views -- User defined computed fields -- The Postgres security model - including Row Level Security, Roles, and Grants. - -The GraphQL API resolves all requests in a single round-trip leading to fast response times and high throughput. - -Reference: - -- [Docs](https://supabase.github.io/pg_graphql/) -- [Source Code](https://github.com/supabase/pg_graphql) - -## Realtime API [#realtime-api-overview] - -Supabase provides a Realtime API using [Realtime](https://github.com/supabase/realtime). You can use this to listen to database changes over websockets. -Realtime leverages PostgreSQL's built-in logical replication. You can manage your Realtime API simply by managing Postgres publications. -Go to your project's [Replication section](https://supabase.com/dashboard/project/_/database/replication) to get started. - ## API URL and Keys You can find the API URL and Keys in the [Dashboard](https://supabase.com/dashboard/project/_/settings/api). diff --git a/apps/docs/pages/guides/api/creating-routes.mdx b/apps/docs/pages/guides/api/creating-routes.mdx index d39fc790847..9881edafb89 100644 --- a/apps/docs/pages/guides/api/creating-routes.mdx +++ b/apps/docs/pages/guides/api/creating-routes.mdx @@ -66,17 +66,12 @@ Every Supabase project has a unique API URL. Your API is secured behind an API g /> -The REST API and the GraphQL API are both accessible through this URL: - -- REST: `https://.supabase.co/rest/v1` -- GraphQL: `https://.supabase.co/graphql/v1` +The REST API is accessible through the URL `https://.supabase.co/rest/v1` Both of these routes require the `anon` key to be passed through an `apikey` header. ## Using the API -### REST API - You can interact with your API directly via HTTP requests, or you can use the client libraries which we provide. Let's see how to make a request to the `todos` table which we created in the first step, @@ -120,131 +115,6 @@ JS Reference: [select()](/docs/reference/javascript/select), [delete()](/docs/reference/javascript/delete), [rpc()](/docs/reference/javascript/rpc) (call Postgres functions). -### GraphQL API - -You can use any GraphQL client with the Supabase GraphQL API. For our GraphQL example we will use [urql](https://formidable.com/open-source/urql/docs/). - - - - -```javascript -import { createClient, useQuery } from 'urql' - -// Prepare API key and Authorization header -const headers = { - apikey: , - authorization: `Bearer ${}`, -} - -// Create GraphQL client -// See: https://formidable.com/open-source/urql/docs/basics/react-preact/#setting-up-the-client -const client = createClient({ - url: '/graphql/v1', - fetchOptions: function createFetchOptions() { - return { headers } - }, -}) - -// Prepare our GraphQL query -const TodosQuery = ` - query { - todosCollection { - edges { - node { - id - title - } - } - } - } -` - -// Query for the data (React) -const [result, reexecuteQuery] = useQuery({ - query: TodosQuery, -}) - -// Read the result -const { data, fetching, error } = result -``` - - - - -```bash -# Append /graphql/v1/ to your URL, and then use the table name as the route -curl --request POST '/graphql/v1' \ --H 'apikey: ' \ --H 'Authorization: Bearer ' \ --H 'Content-Type: application/json' \ --d '{ "query":"{ todos(first: 3) { edges { node { id } } } }" }' -``` - - - - -### Realtime API - -By default Realtime is disabled on your database. Let's turn on Realtime for the `todos` table. - - - - -1. Go to the [Database](https://supabase.com/dashboard/project/_/database/tables) page in the Dashboard. -2. Click on **Replication** in the sidebar. -3. Control which database events are sent by toggling **Insert**, **Update**, and **Delete**. -4. Control which tables broadcast changes by selecting **Source** and toggling each table. - - - - - - -```sql -alter - publication supabase_realtime add table todos; -``` - - - - -From the client, we can listen to any new data that is inserted into the `todos` table: - -```javascript -// Initialize the JS client -import { createClient } from '@supabase/supabase-js' -const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY) - -// Create a function to handle inserts -const handleInserts = (payload) => { - console.log('Change received!', payload) -} - -// Listen to inserts -const { data: todos, error } = await supabase.from('todos').on('INSERT', handleInserts).subscribe() -``` - -Use [subscribe()](/docs/reference/javascript/subscribe) to listen to database changes. -The Realtime API works through PostgreSQL's replication functionality. Postgres sends database changes to a [publication](/docs/guides/database/replication#publications) -called `supabase_realtime`, and by managing this publication you can control which data is broadcast. - export const Page = ({ children }) => export default Page diff --git a/apps/docs/pages/guides/api/graphql/graphiql.mdx b/apps/docs/pages/guides/api/graphql/graphiql.mdx deleted file mode 100644 index a3ce41073fd..00000000000 --- a/apps/docs/pages/guides/api/graphql/graphiql.mdx +++ /dev/null @@ -1,22 +0,0 @@ -import Layout from '~/layouts/DefaultGuideLayout' - -export const meta = { - id: 'graphiql', - title: 'GraphiQL documentation', - description: 'Some docs on graphiql.', - video: 'https://www.youtube.com/v/7CqlTU9aOR4', -} - -Every Supabase project has a GraphQL Endpoint: `https://.supabase.co/graphql/v1`. - -This endpoint is compatible with any GraphiQL implementation that can pass an `apikey` header. -Some suggested applications: - -- [paw.cloud](https://paw.cloud) -- [insomnia.rest](https://insomnia.rest) -- [postman.com/graphql](https://www.postman.com/graphql/) -- Self-hosted GraphiQL: GraphiQL can be served through a simple HTML file. See [this discussion](https://github.com/supabase/supabase/discussions/6144) for more details. - -export const Page = ({ children }) => - -export default Page diff --git a/apps/docs/pages/guides/api/quickstart.mdx b/apps/docs/pages/guides/api/quickstart.mdx index 18965256ad2..d79c3d696a5 100644 --- a/apps/docs/pages/guides/api/quickstart.mdx +++ b/apps/docs/pages/guides/api/quickstart.mdx @@ -174,64 +174,6 @@ response = supabase.table('todos').select("*").execute() -### GraphQL - -Every table can be accessed through the GraphQL API by switching `/rest/v1` with `/graphql/v1`. - - - - -```javascript -import { createClient, useQuery } from 'urql' - -const URL = '/graphql/v1' -const ANON_KEY = '' - -// Prepare API key and Authorization header -const headers = { - apikey: `${ANON_KEY}`, - authorization: `Bearer ${ANON_KEY}`, -} - -const client = createClient({ - url: URL, - fetchOptions: function createFetchOptions() { - return { headers } - }, -}) - -// Prepare our GraphQL query -const TodosQuery = ` - query { - todosCollection { - edges { - node { - id - task - } - } - } - } -` - -// Query for the data (React) -const [result, reexecuteQuery] = useQuery({ - query: TodosQuery, -}) - -// Read the result -const { data, fetching, error } = result -``` - - - - export const Page = ({ children }) => export default Page diff --git a/apps/docs/pages/guides/graphql/[[...slug]].tsx b/apps/docs/pages/guides/graphql/[[...slug]].tsx new file mode 100644 index 00000000000..ed8ce6fb745 --- /dev/null +++ b/apps/docs/pages/guides/graphql/[[...slug]].tsx @@ -0,0 +1,152 @@ +import { CodeHikeConfig, remarkCodeHike } from '@code-hike/mdx' +import { GetStaticPaths, GetStaticProps } from 'next' +import { MDXRemote, MDXRemoteSerializeResult } from 'next-mdx-remote' +import { serialize } from 'next-mdx-remote/serialize' +import { isAbsolute, relative } from 'path' +import rehypeSlug from 'rehype-slug' +import remarkGfm from 'remark-gfm' +import codeHikeTheme from 'config/code-hike.theme.json' assert { type: 'json' } +import components from '~/components' +import Layout from '~/layouts/DefaultGuideLayout' +import { UrlTransformFunction, linkTransform } from '~/lib/mdx/plugins/rehypeLinkTransform' +import remarkMkDocsAdmonition from '~/lib/mdx/plugins/remarkAdmonition' +import { removeTitle } from '~/lib/mdx/plugins/remarkRemoveTitle' +import remarkPyMdownTabs from '~/lib/mdx/plugins/remarkTabs' + +// We fetch these docs at build time from an external repo +const org = 'supabase' +const repo = 'pg_graphql' +const branch = 'master' +const docsDir = 'docs' +const externalSite = 'https://supabase.github.io/pg_graphql' + +// Each external docs page is mapped to a local page +const pageMap = [ + { + meta: { + id: 'graphql-overview', + title: 'GraphQL', + }, + remoteFile: 'supabase.md', + }, + { + slug: 'api', + meta: { + id: 'graphql-api', + title: 'GraphQL API', + }, + remoteFile: 'api.md', + }, +] + +interface PGGraphQLDocsProps { + source: MDXRemoteSerializeResult + meta: { + title: string + description?: string + } +} + +export default function PGGraphQLDocs({ source, meta }: PGGraphQLDocsProps) { + return ( + + + + ) +} + +/** + * Fetch markdown from external repo and transform links + */ +export const getStaticProps: GetStaticProps = async ({ params }) => { + const [slug] = params.slug ?? [] + const page = pageMap.find((page) => page.slug === slug) + + if (!page) { + throw new Error(`No page mapping found for slug '${slug}'`) + } + + const { remoteFile, meta } = page + + const response = await fetch( + `https://raw.githubusercontent.com/${org}/${repo}/${branch}/${docsDir}/${remoteFile}` + ) + + const source = await response.text() + + const urlTransform: UrlTransformFunction = (url) => { + try { + const externalSiteUrl = new URL(externalSite) + + const placeholderHostname = 'placeholder' + const { hostname, pathname, hash } = new URL(url, `http://${placeholderHostname}`) + + // Don't modify a url with a FQDN or a url that's only a hash + if (hostname !== placeholderHostname || pathname === '/') { + return url + } + + const getRelativePath = () => { + if (pathname.endsWith('.md')) { + return pathname.replace(/\.md$/, '') + } + if (isAbsolute(url)) { + return relative(externalSiteUrl.pathname, pathname) + } + return pathname + } + + const relativePath = getRelativePath().replace(/^\//, '') + + const page = pageMap.find(({ remoteFile }) => `${relativePath}.md` === remoteFile) + + // If we have a mapping for this page, use the mapped path + if (page) { + return page.slug + hash + } + + // If we don't have this page in our docs, link to original docs + return `${externalSite}/${relativePath}${hash}` + } catch (err) { + console.error('Error transforming markdown URL', err) + return url + } + } + + const codeHikeOptions: CodeHikeConfig = { + theme: codeHikeTheme, + lineNumbers: true, + showCopyButton: true, + skipLanguages: [], + autoImport: false, + } + + const mdxSource = await serialize(source, { + scope: { + chCodeConfig: codeHikeOptions, + }, + mdxOptions: { + remarkPlugins: [ + remarkGfm, + remarkMkDocsAdmonition, + remarkPyMdownTabs, + [removeTitle, meta.title], + [remarkCodeHike, codeHikeOptions], + ], + rehypePlugins: [[linkTransform, urlTransform], rehypeSlug], + }, + }) + + return { props: { source: mdxSource, meta } } +} + +export const getStaticPaths: GetStaticPaths = async () => { + return { + paths: pageMap.map(({ slug }) => ({ + params: { + slug: slug ? [slug] : [], + }, + })), + fallback: false, + } +} diff --git a/apps/docs/pages/guides/realtime.mdx b/apps/docs/pages/guides/realtime.mdx index 9014147b0d4..a043d596c5c 100644 --- a/apps/docs/pages/guides/realtime.mdx +++ b/apps/docs/pages/guides/realtime.mdx @@ -14,6 +14,63 @@ Supabase provides a globally distributed cluster of [Realtime](https://github.co - [Presence](/docs/guides/realtime/presence): Track and synchronize shared state between clients. - [Postgres Changes](/docs/guides/realtime/postgres-changes): Listen to Postgres database changes and send them to authorized clients. +### Realtime API + +By default Realtime is disabled on your database. Let's turn on Realtime for a `todos` table. + + + + +1. Go to the [Database](https://supabase.com/dashboard/project/_/database/tables) page in the Dashboard. +2. Click on **Replication** in the sidebar. +3. Control which database events are sent by toggling **Insert**, **Update**, and **Delete**. +4. Control which tables broadcast changes by selecting **Source** and toggling each table. + +{' '} + + + + + + +```sql +alter + publication supabase_realtime add table todos; +``` + + + + +From the client, we can listen to any new data that is inserted into the `todos` table: + +```javascript +// Initialize the JS client +import { createClient } from '@supabase/supabase-js' +const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY) + +// Create a function to handle inserts +const handleInserts = (payload) => { + console.log('Change received!', payload) +} + +// Listen to inserts +const { data: todos, error } = await supabase.from('todos').on('INSERT', handleInserts).subscribe() +``` + +Use [subscribe()](/docs/reference/javascript/subscribe) to listen to database changes. +The Realtime API works through PostgreSQL's replication functionality. Postgres sends database changes to a [publication](/docs/guides/database/replication#publications) +called `supabase_realtime`, and by managing this publication you can control which data is broadcast. + ## Examples
diff --git a/apps/docs/public/img/icons/menu/graphql.svg b/apps/docs/public/img/icons/menu/graphql.svg new file mode 100644 index 00000000000..bc4ea33340c --- /dev/null +++ b/apps/docs/public/img/icons/menu/graphql.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/apps/docs/public/img/icons/menu/rest.svg b/apps/docs/public/img/icons/menu/rest.svg new file mode 100644 index 00000000000..a901918409a --- /dev/null +++ b/apps/docs/public/img/icons/menu/rest.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/apps/docs/public/sitemap.xml b/apps/docs/public/sitemap.xml index e25ed2cfa05..34bf9dbe55c 100644 --- a/apps/docs/public/sitemap.xml +++ b/apps/docs/public/sitemap.xml @@ -66,12 +66,6 @@ 0.5 - - https://supabase.com/docs/guides/integrations - weekly - 0.5 - - https://supabase.com/docs/guides/platform weekly @@ -108,72 +102,6 @@ 0.5 - - https://supabase.com/docs/guides/ai/choosing-instance-type - weekly - 0.5 - - - - https://supabase.com/docs/guides/ai/concepts - weekly - 0.5 - - - - https://supabase.com/docs/guides/ai/engineering-for-scale - weekly - 0.5 - - - - https://supabase.com/docs/guides/ai/google-colab - weekly - 0.5 - - - - https://supabase.com/docs/guides/ai/hugging-face - weekly - 0.5 - - - - https://supabase.com/docs/guides/ai/langchain - weekly - 0.5 - - - - https://supabase.com/docs/guides/ai/managing-collections - weekly - 0.5 - - - - https://supabase.com/docs/guides/ai/vector-indexes - weekly - 0.5 - - - - https://supabase.com/docs/guides/ai/structured-unstructured - weekly - 0.5 - - - - https://supabase.com/docs/guides/ai/vecs-python-client - weekly - 0.5 - - - - https://supabase.com/docs/guides/ai/vector-columns - weekly - 0.5 - - https://supabase.com/docs/guides/api/api-keys weekly @@ -204,6 +132,84 @@ 0.5 + + https://supabase.com/docs/guides/api/using-custom-schemas + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/choosing-compute-addon + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/concepts + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/engineering-for-scale + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/going-to-prod + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/google-colab + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/hugging-face + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/langchain + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/python-clients + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/structured-unstructured + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/vecs-python-client + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/vector-columns + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/vector-indexes + weekly + 0.5 + + https://supabase.com/docs/guides/auth/auth-captcha weekly @@ -246,6 +252,12 @@ 0.5 + + https://supabase.com/docs/guides/auth/auth-smtp + weekly + 0.5 + + https://supabase.com/docs/guides/auth/enterprise-sso weekly @@ -282,6 +294,30 @@ 0.5 + + https://supabase.com/docs/guides/cli/customizing-email-templates + weekly + 0.5 + + + + https://supabase.com/docs/guides/cli/getting-started + weekly + 0.5 + + + + https://supabase.com/docs/guides/cli/local-development + weekly + 0.5 + + + + https://supabase.com/docs/guides/cli/managing-config + weekly + 0.5 + + https://supabase.com/docs/guides/cli/managing-environments weekly @@ -289,7 +325,127 @@ - https://supabase.com/docs/guides/cli/using-environment-variables-in-config + https://supabase.com/docs/guides/cli/seeding-your-database + weekly + 0.5 + + + + https://supabase.com/docs/guides/cli/testing-and-linting + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/arrays + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/column-encryption + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/connecting-to-postgres + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/extensions + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/full-text-search + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/functions + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/inspect + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/json + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/managing-passwords + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/managing-timezones + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/overview + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/partitions + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/query-optimization + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/replication + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/sql-to-api + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/tables + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/testing + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/vault + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/webhooks weekly 0.5 @@ -390,6 +546,12 @@ 0.5 + + https://supabase.com/docs/guides/functions/unit-test + weekly + 0.5 + + https://supabase.com/docs/guides/getting-started/architecture weekly @@ -402,300 +564,6 @@ 0.5 - - https://supabase.com/docs/guides/getting-started/local-development - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/arrays - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/column-encryption - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/connecting-to-postgres - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/extensions - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/full-text-search - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/functions - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/json - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/managing-passwords - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/managing-timezones - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/overview - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/partitions - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/replication - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/sql-to-api - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/tables - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/testing - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/timeouts - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/vault - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/webhooks - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/appsmith - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/auth0 - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/authsignal - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/bracket - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/clerk - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/cloudflare-workers - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/dhiwise - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/directus - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/draftbit - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/estuary - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/fezto - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/flutterflow - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/forestadmin - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/illa - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/integrations - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/keyri - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/onesignal - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/passage - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/pgmustard - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/picket - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/plasmic - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/polyscale - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/prisma - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/sequin - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/snaplet - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/stytch - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/supertokens - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/vercel - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/weweb - weekly - 0.5 - - - - https://supabase.com/docs/guides/integrations/zuplo - weekly - 0.5 - - https://supabase.com/docs/guides/platform/access-control weekly @@ -732,12 +600,24 @@ 0.5 + + https://supabase.com/docs/guides/platform/enterprise-billing + weekly + 0.5 + + https://supabase.com/docs/guides/platform/exhaust-cpu weekly 0.5 + + https://supabase.com/docs/guides/platform/exhaust-disk-io + weekly + 0.5 + + https://supabase.com/docs/guides/platform/exhaust-ram weekly @@ -762,6 +642,12 @@ 0.5 + + https://supabase.com/docs/guides/platform/marketplace + weekly + 0.5 + + https://supabase.com/docs/guides/platform/maturity-model weekly @@ -786,6 +672,12 @@ 0.5 + + https://supabase.com/docs/guides/platform/org-based-billing + weekly + 0.5 + + https://supabase.com/docs/guides/platform/performance weekly @@ -798,6 +690,12 @@ 0.5 + + https://supabase.com/docs/guides/platform/project-transfer + weekly + 0.5 + + https://supabase.com/docs/guides/platform/shared-responsibility-model weekly @@ -870,12 +768,6 @@ 0.5 - - https://supabase.com/docs/guides/realtime/quickstart - weekly - 0.5 - - https://supabase.com/docs/guides/realtime/quotas weekly @@ -979,25 +871,19 @@ - https://supabase.com/docs/guides/ai/integrations/llamaindex + https://supabase.com/docs/guides/api/rest/auto-generated-docs weekly 0.5 - https://supabase.com/docs/guides/ai/quickstarts/face-similarity + https://supabase.com/docs/guides/api/rest/client-libs weekly 0.5 - https://supabase.com/docs/guides/ai/quickstarts/hello-world - weekly - 0.5 - - - - https://supabase.com/docs/guides/ai/quickstarts/text-deduplication + https://supabase.com/docs/guides/api/rest/generating-types weekly 0.5 @@ -1039,25 +925,31 @@ - https://supabase.com/docs/guides/api/graphql/graphiql + https://supabase.com/docs/guides/ai/integrations/llamaindex weekly 0.5 - https://supabase.com/docs/guides/api/rest/auto-generated-docs + https://supabase.com/docs/guides/ai/quickstarts/face-similarity weekly 0.5 - https://supabase.com/docs/guides/api/rest/client-libs + https://supabase.com/docs/guides/ai/quickstarts/generate-text-embeddings weekly 0.5 - https://supabase.com/docs/guides/api/rest/generating-types + https://supabase.com/docs/guides/ai/quickstarts/hello-world + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/quickstarts/text-deduplication weekly 0.5 @@ -1098,12 +990,68 @@ 0.5 + + https://supabase.com/docs/guides/auth/concepts/redirect-urls + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/phone-login/messagebird + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/phone-login/twilio + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/phone-login/vonage + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/vector-indexes/hnsw-indexes + weekly + 0.5 + + + + https://supabase.com/docs/guides/ai/vector-indexes/ivf-indexes + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/quickstarts/nextjs + weekly + 0.5 + + https://supabase.com/docs/guides/auth/quickstarts/react weekly 0.5 + + https://supabase.com/docs/guides/auth/server-side/email-based-auth-with-pkce-flow-for-ssr + weekly + 0.5 + + + + https://supabase.com/docs/guides/auth/server-side/oauth-with-pkce-flow-for-ssr + weekly + 0.5 + + https://supabase.com/docs/guides/auth/social-login/auth-apple weekly @@ -1122,12 +1070,6 @@ 0.5 - - https://supabase.com/docs/guides/getting-started/quickstarts/android - weekly - 0.5 - - https://supabase.com/docs/guides/auth/social-login/auth-discord weekly @@ -1140,6 +1082,12 @@ 0.5 + + https://supabase.com/docs/guides/auth/social-login/auth-figma + weekly + 0.5 + + https://supabase.com/docs/guides/auth/social-login/auth-github weekly @@ -1158,6 +1106,12 @@ 0.5 + + https://supabase.com/docs/guides/auth/social-login/auth-kakao + weekly + 0.5 + + https://supabase.com/docs/guides/auth/social-login/auth-keycloak weekly @@ -1218,162 +1172,6 @@ 0.5 - - https://supabase.com/docs/guides/auth/phone-login/messagebird - weekly - 0.5 - - - - https://supabase.com/docs/guides/auth/phone-login/twilio - weekly - 0.5 - - - - https://supabase.com/docs/guides/auth/phone-login/vonage - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/cloudflare-turnstile - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/discord-bot - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/github-actions - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/og-image - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/rate-limiting - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/screenshots - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/send-emails - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/stripe-webhooks - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/telegram-bot - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/upstash-redis - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/quickstarts/flutter - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/quickstarts/nextjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/quickstarts/nuxtjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/quickstarts/reactjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/quickstarts/redwoodjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/quickstarts/solidjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/quickstarts/sveltekit - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/quickstarts/vue - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/postgres/cascade-deletes - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/postgres/dropping-all-tables-in-schema - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/postgres/first-row-in-group - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/postgres/indexes - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/postgres/which-version-of-postgres - weekly - 0.5 - - https://supabase.com/docs/guides/database/extensions/http weekly @@ -1386,12 +1184,24 @@ 0.5 + + https://supabase.com/docs/guides/database/extensions/index_advisor + weekly + 0.5 + + https://supabase.com/docs/guides/database/extensions/pg-safeupdate weekly 0.5 + + https://supabase.com/docs/guides/database/extensions/pg_cron + weekly + 0.5 + + https://supabase.com/docs/guides/database/extensions/pg_graphql weekly @@ -1410,12 +1220,24 @@ 0.5 + + https://supabase.com/docs/guides/database/extensions/pg_net + weekly + 0.5 + + https://supabase.com/docs/guides/database/extensions/pg_plan_filter weekly 0.5 + + https://supabase.com/docs/guides/database/extensions/pg_repack + weekly + 0.5 + + https://supabase.com/docs/guides/database/extensions/pg_stat_monitor weekly @@ -1434,30 +1256,12 @@ 0.5 - - https://supabase.com/docs/guides/database/extensions/pgcron - weekly - 0.5 - - https://supabase.com/docs/guides/database/extensions/pgjwt weekly 0.5 - - https://supabase.com/docs/guides/database/extensions/pgnet - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/extensions/pgrepack - weekly - 0.5 - - https://supabase.com/docs/guides/database/extensions/pgroonga weekly @@ -1525,7 +1329,277 @@ - https://supabase.com/docs/guides/database/extensions/wrappers/overview + https://supabase.com/docs/guides/database/postgres/cascade-deletes + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/postgres/configuration + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/postgres/dropping-all-tables-in-schema + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/postgres/first-row-in-group + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/postgres/indexes + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/postgres/roles + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/postgres/row-level-security + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/postgres/triggers + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/postgres/which-version-of-postgres + weekly + 0.5 + + + + https://supabase.com/docs/guides/platform/oauth-apps/build-a-supabase-integration + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/cloudflare-turnstile + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/discord-bot + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/github-actions + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/og-image + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/rate-limiting + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/screenshots + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/send-emails + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/stripe-webhooks + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/telegram-bot + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/upstash-redis + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-angular + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-expo + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-flutter + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-angular + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-react + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-vue + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-kotlin + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-nextjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-nuxt-3 + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-react + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-redwoodjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-refine + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-solidjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-svelte + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-sveltekit + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/tutorials/with-vue-3 + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/quickstarts/flutter + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/quickstarts/kotlin + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/quickstarts/nextjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/quickstarts/nuxtjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/quickstarts/reactjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/quickstarts/redwoodjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/quickstarts/refine + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/quickstarts/solidjs + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/quickstarts/sveltekit + weekly + 0.5 + + + + https://supabase.com/docs/guides/getting-started/quickstarts/vue weekly 0.5 @@ -1548,6 +1622,18 @@ 0.5 + + https://supabase.com/docs/guides/realtime/guides/client-side-throttling + weekly + 0.5 + + + + https://supabase.com/docs/guides/self-hosting/analytics/config + weekly + 0.5 + + https://supabase.com/docs/guides/resources/migrating-to-supabase/amazon-rds weekly @@ -1584,108 +1670,18 @@ 0.5 - - https://supabase.com/docs/guides/getting-started/tutorials/with-angular - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-expo - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-flutter - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-kotlin - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-angular - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-react - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-ionic-vue - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-nextjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-nuxt-3 - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-react - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-redwoodjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-solidjs - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-svelte - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-sveltekit - weekly - 0.5 - - - - https://supabase.com/docs/guides/getting-started/tutorials/with-vue-3 - weekly - 0.5 - - - - https://supabase.com/docs/guides/self-hosting/analytics/config - weekly - 0.5 - - https://supabase.com/docs/guides/self-hosting/realtime/config weekly 0.5 + + https://supabase.com/docs/guides/self-hosting/storage/config + weekly + 0.5 + + https://supabase.com/docs/guides/self-hosting/auth/config weekly @@ -1693,7 +1689,7 @@ - https://supabase.com/docs/guides/self-hosting/storage/config + https://supabase.com/docs/guides/database/extensions/wrappers/overview weekly 0.5 @@ -1734,6 +1730,12 @@ 0.5 + + https://supabase.com/docs/reference/javascript/auth-signinwithidtoken + weekly + 0.5 + + https://supabase.com/docs/reference/javascript/auth-signinwithsso weekly @@ -2360,6 +2362,18 @@ 0.5 + + https://supabase.com/docs/reference/dart/auth-reauthentication + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-resend + weekly + 0.5 + + https://supabase.com/docs/reference/dart/auth-onauthstatechange weekly @@ -2372,6 +2386,96 @@ 0.5 + + https://supabase.com/docs/reference/dart/auth-mfa-api + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-mfa-enroll + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-mfa-challenge + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-mfa-verify + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-mfa-challengeandverify + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-mfa-unenroll + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-mfa-getauthenticatorassurancelevel + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/admin-api + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-admin-getuserbyid + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-admin-listusers + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-admin-createuser + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-admin-deleteuser + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-admin-inviteuserbyemail + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-admin-generatelink + weekly + 0.5 + + + + https://supabase.com/docs/reference/dart/auth-admin-updateuserbyid + weekly + 0.5 + + https://supabase.com/docs/reference/dart/functions-invoke weekly @@ -4022,6 +4126,12 @@ 0.5 + + https://supabase.com/docs/reference/kotlin/getchannels + weekly + 0.5 + + https://supabase.com/docs/reference/kotlin/storage-listbuckets weekly @@ -4130,48 +4240,6 @@ 0.5 - - https://supabase.com/docs/reference/cli/supabase-sso - weekly - 0.5 - - - - https://supabase.com/docs/reference/cli/supabase-sso-info - weekly - 0.5 - - - - https://supabase.com/docs/reference/cli/supabase-sso-add - weekly - 0.5 - - - - https://supabase.com/docs/reference/cli/supabase-sso-remove - weekly - 0.5 - - - - https://supabase.com/docs/reference/cli/supabase-sso-update - weekly - 0.5 - - - - https://supabase.com/docs/reference/cli/supabase-sso-list - weekly - 0.5 - - - - https://supabase.com/docs/reference/cli/supabase-sso-show - weekly - 0.5 - - https://supabase.com/docs/reference/cli/supabase-vanity-subdomains weekly @@ -4238,6 +4306,48 @@ 0.5 + + https://supabase.com/docs/reference/cli/supabase-sso + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-sso-update + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-sso-show + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-sso-remove + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-sso-list + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-sso-info + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-sso-add + weekly + 0.5 + + https://supabase.com/docs/reference/cli/supabase-ssl-enforcement weekly @@ -4298,6 +4408,30 @@ 0.5 + + https://supabase.com/docs/reference/cli/supabase-projects-api-keys + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-ssl-enforcement + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-postgres-config-update + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-postgres-config-get + weekly + 0.5 + + https://supabase.com/docs/reference/cli/supabase-orgs weekly @@ -4310,6 +4444,12 @@ 0.5 + + https://supabase.com/docs/reference/cli/supabase-orgs-create + weekly + 0.5 + + https://supabase.com/docs/reference/cli/supabase-network-restrictions weekly @@ -4358,6 +4498,12 @@ 0.5 + + https://supabase.com/docs/reference/cli/supabase-migration-squash + weekly + 0.5 + + https://supabase.com/docs/reference/cli/supabase-migration-repair weekly @@ -4388,6 +4534,126 @@ 0.5 + + https://supabase.com/docs/reference/cli/supabase-inspect-db + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-vacuum-stats + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-unused-indexes + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-total-table-sizes + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-total-index-size + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-table-sizes + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-table-record-counts + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-table-index-sizes + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-seq-scans + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-role-connections + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-replication-slots + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-outliers + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-long-running-queries + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-locks + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-index-usage + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-index-sizes + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-calls + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-cache-hit + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-blocking + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-inspect-db-bloat + weekly + 0.5 + + https://supabase.com/docs/reference/cli/supabase-init weekly @@ -4436,6 +4702,12 @@ 0.5 + + https://supabase.com/docs/reference/cli/supabase-functions-list + weekly + 0.5 + + https://supabase.com/docs/reference/cli/supabase-functions-download weekly @@ -4496,30 +4768,30 @@ 0.5 + + https://supabase.com/docs/reference/cli/supabase-db-start + weekly + 0.5 + + https://supabase.com/docs/reference/cli/supabase-db-reset weekly 0.5 - - https://supabase.com/docs/reference/cli/supabase-db-remote - weekly - 0.5 - - - - https://supabase.com/docs/reference/cli/supabase-db-remote-commit - weekly - 0.5 - - https://supabase.com/docs/reference/cli/supabase-db-push weekly 0.5 + + https://supabase.com/docs/reference/cli/supabase-db-pull + weekly + 0.5 + + https://supabase.com/docs/reference/cli/supabase-db-lint weekly @@ -4568,6 +4840,48 @@ 0.5 + + https://supabase.com/docs/reference/cli/supabase-branches + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-branches-update + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-branches-list + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-branches-get + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-branches-disable + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-branches-delete + weekly + 0.5 + + + + https://supabase.com/docs/reference/cli/supabase-branches-create + weekly + 0.5 + + https://supabase.com/docs/reference/api/introduction weekly